분류 전체보기 107

Node.js + express 로 백엔드 구축 도전기 (2) - 프로젝트 셋팅

https://november-itstime.tistory.com/80 node.js + express로 백엔드 서버 구축 도전기 (1) - 소개회사에서 사내 랜딩 페이지 백엔드를 구축해보라는 과제를 받아서 도전해본 것들을 블로그에 정리하며 개념을 학습하고자 한다.사실 개발하면서 책과 각종 자료들을 참고하긴 했으나 개념 학november-itstime.tistory.com이전 글에 이어 작성하지만 이젠 본격적으로 프로젝트 셋팅을 해보았다. 이 모든 지식의 기반은 제로초님의 Node.js 책이였다. 비록 14버전이지만 기본 개념은 일맥상통한다고 생각이 되어 많이 참고하고 배웠다. 또한 사수분께서도 Express 는 규격화된  표준 모델이 없기 때문에 이를 셋팅하는 것 자체가 어렵다고 말씀해주셨고 표준 모델..

BackEnd Skils 2024.09.06

Node.js + express로 백엔드 서버 구축 도전기 (1) - 소개

회사에서 사내 랜딩 페이지 백엔드를 구축해보라는 과제를 받아서 도전해본 것들을 블로그에 정리하며 개념을 학습하고자 한다.사실 개발하면서 책과 각종 자료들을 참고하긴 했으나 개념 학습 없이 도입하고 따라친 것들이 많아서 이 참에 정리하고자 했다.1.  express 도입 이유 단순하게 내가 프론트엔드 개발자여서 JavaScript에 익숙했기 때문에 당연하게 express를 사용하고자 했다. 파이썬으로 하는 법도 있지만 (자바는 몰라서..) 익숙하지도 않고 이왕 하나의 언어로 한 번 프론트 , 백 모두 해보자라는 생각에서 출발하게 되었다.  2. About Node.js Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다 * 런타임 : 특정 언어로 만든 프로..

BackEnd Skils 2024.09.06

BOJ - 1931 회의실 배정

문제 링크 : https://www.acmicpc.net/problem/1931문제 티어 : 실버1 문제 유형: 그리디 알고리즘문제 풀이: 회의실을 최대한 많이 쓰기 위해선 시간이 겹치지 않아야 한다. 즉 이전 회의 종료 시간보다 다음 회의 시작 시간이 크면 된다. 이를 나타내면 아래와 같다. ex) 1 - 4 / 5 - 7 / 8 - 10 (O)       1 - 4 / 2 - 5 / 6 - 10 (X)  따라서 1 , 4 이 부분을 좌표로 만들어주면 어떨까 생각했다. 즉, (1,4) 라고 설정하고 (x1,y1) 이라 생각하기로 했다.위 경우를 일반화 시키면 아래와 같다. (x1,y1) = (1,4) // 첫 번째 입력 값if x2가 y1보다 크면   count++ ; // 회의할 수 있는 회의 갯수 ..

BOJ - 13305 주유소

문제 링크 : https://www.acmicpc.net/problem/13305문제 유형 : 그리디 알고리즘문제 티어 : 실버3문제 풀이 : 주유소의 기름 가격과 도로의 길이가 나와 있다. 최소 비용을 구하려면 당연히 가격이 싼 주유소에서 제일 많이 넣어야 한다. 많이 넣어야 한다는 것은 다음 거리로 갈 때까지 최대한 많이 넣어야 한다는 점이다. 즉, 다음 도시 주유소 가격이 지금 주유소보다 싸면 다음 주유소 가격으로 설정해주고 그렇지 않다면 지금 최저가의 주유소 가격을 기본 값으로 계속 유지해줘야 한다. 그 후 거리를 곱해주면 최소 비용이 나올 것이다. 1) 첫 번째 주유소의 가격을 minValue로 설정해줌.2) 그 후 도시들을 순회하면서 기름 가격이 비싼 지 현재 minValue와 다음 도시들의 ..

BOJ - 1946 신입사원

문제 링크 : https://www.acmicpc.net/problem/1946문제 유형 : 그리디 알고리즘문제 티어 : 실버1 문제 풀이 : 적어도 하나는 다른 지원자보다 떨어지면 안된다는 조건이 있기 때문에 1차 서류 심사와 2차 면접 시험 중 하나를 오름차순으로 정렬 후 나머지 하나를 비교해줘야 한다.    예를 들어 1차 서류 심사 점수를 오름차순으로 정렬한다고 치자. 그러면 가장 첫 번째 즉, 맨 위에 있는 사람은 1차 서류 점수는 1등일 것이다. 이 때 최대 인원을 뽑으려면 그 아래부터는 무조건 앞 사람보다는 순위가 더 높아야 한다. 1차 서류가 1등인 사람은 무조건 뽑힐 것이고 그 아래부터 윗 사람보다 2차 면접 순위가 높으면 뽑힐 수 있기 때문에 최대한 이 구조를 만들어줘야 한다는 것이다...

BOJ - 1789 수 들의 합

문제 링크 :https://www.acmicpc.net/problem/1789문제 유형 : 그리디 알고리즘문제 풀이 : 서로 다른 N개의 자연수의 합으로 S를 만들어야 한다는 문제고 그리디 알고리즘의 특성을 살려서 풀었다.가장 핵심 아이디어는 1부터 쭉 더했을 때 어느 시점에 S를 넘어갈 것이다. 그 때를 체크해주면 된다. 1) 1부터 계속 더해준다. ex) 1+2+3+4....2) 그러다 S를 초과하는 경우가 발생할 때를 확인한다. ex) S = 15 , 1+2+3+4+5 (O) / 1+2+3+4+5+6 (X) 3) 한 번 씩 더 할 때마다 count를 세주고 만약 2)와 같이 초과하는 경우가 발생 했을 때 이미 count를 한 번 한 상황이니 1을 빼주고 그 count를 출력한다. ex) 6까지 갔을..

BOJ - 16953 A->B

문제 링크 : https://www.acmicpc.net/problem/16953문제 유형 : 그리디 알고리즘문제 풀이 : 핵심 아이디어는 반대로 생각하는 것이다. 즉, A->B가 아닌 B->A로 간다고 생각하자.                1) 마지막에서 2로 나누었을 때 나누어 떨어지는 경우엔 나누기 2를 해줌               2) 일의 자릿수가 1인 경우는 1을 제거풀이 코드 const fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().split("\n");let [a,b] = input[0].split(" ").map(Number);let count = 0;while(a 2) GPTs 해설 GPT는 BFS의 방..

BOJ - 2839 설탕 배달

문제 링크 : https://www.acmicpc.net/problem/2839문제 유형 : 그리디 알고리즘문제 티어 : 실버4문제 풀이 : 5키로랑 3키로짜리 봉지가 있고 이 두 개를 통해 최대한 적은 갯수의 봉지를 가져가야 한다.  => 5키로로 담을 수 있는 만큼 담고 그 다음 3키로로 채우면 될 것 같은 문제다. 시간 복잡도 : O(N)const fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().split("\n");let n = Number(input[0]);let count = 0;while(true) { if(n%5===0){ count -= n/5; break; } n-=..

Chart 라이브러리 (1) - Plotly.js

회사에서 주로 필요로 하는 요구사항이 데이터를 웹에서 시각화 해야 한다는 점이기 때문에 이 점을 집중적으로 찾다 보니 차트 라이브러리를 계속 찾게 되었는데 기존 회사 서비스에선 Python 에서 Dash로 만든 웹 사이트에 Plotly.js를 사용 했기 때문에 처음에 나도 이걸 토대로 진행 하게 되었다. 비록 현재는 다른 차트 라이브러리들을 사용하고 있지만 Plotly.js 설치 방법과 사용 방법에 대해 자세히 알아보고자 한다.  1. Plotly.js란? JavaScript로 구현된 오픈 소스 시각화 라이브러리 중 하나이다. 특히 Python Dash 같은 곳에서 함께 사용되기 좋다. 인터랙티브 시각화 도구이기도 하다. 현재는 recharts. d3.js , chart.js 등에 밀려 주류로 사용하는 ..

FrontEnd Skils 2024.07.05

BOJ - 1541 잃어버린 괄호

문제 링크 : https://www.acmicpc.net/problem/1541문제 유형 : 그리디 알고리즘문제 티어: 실버2 문제 풀이1) 최솟값을 찾아야 하기 때문에 일단 "-" 기준으로 수식을 나눈다. 2) ( ) - ( ) 기준으로 나왔을 때 무조건 뒷 괄호를 크게 만들어놓고 앞 괄호에서 뒷 괄호를 빼는게 제일 최솟값일 것이다. 3) 만약 - 기준으로 나눴을 때 +로 묶인 부분이 있으면 더해주어야 한다.4) 첫 번째 괄호는 그냥 더해주고 두 번째 괄호부터는 다 빼주는게 제일 최솟값일 것이다(이미 -로 구분 지었고 첫 번째는 숫자로 시작 즉, + 이기 때문에 더해줘야 함)const fs = require("fs");let input = fs.readFileSync("/dev/stdin").toStr..