PS
백준 / DP(Dynamic Programming) / 2579번 / 계단 오르기 / JS
문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 마지막 도착 계단은 반드시 밟아야 한다. 따라서 첫 번째 계단을 ..
제코베 JS 100제 / 72 / 너비 우선 탐색
너비 우선 탐색이란 어떤 노드를 방문하여 확인한 후, 목표한 노드가 아니면 그 노드와 연결된 정점들 중에서 우선순위가 동일한 다른 노드를 찾고 그 순위에 없으면 그다음 순위 노드를 차례대로 찾는 방법이다. 다음과 같이 입력이 주어질 때 너비 우선 탐색을 한 순서대로 노드의 인덱스를 공백 구분으로 출력하세요. /** * 너비 우선 탐색 * @param {Object} graph 리스트 형태로 노드들의 연결 관계가 담긴 오브젝트 * @param {String} start 출발 노드(= 최상위 노드) * @returns 너비 우선 탐색을 한 순서대로 노드의 인덱스를 공백으로 구분하여 리턴 */ function BFS(graph, start) { const queue = [start]; const visited..
제코베 JS 100제 / 71 / 깊이 우선 탐색
깊이 우선 탐색이란 목표한 노드를 찾기 위해 가장 우선순위가 높은 노드의 자식으로 깊이 들어갔다가 목표 노드가 존재하지 않으면 처음 방문한 노드와 연결된 다른 노드부터 그 자식 노드로 파고드는 검색 방법을 말합니다. 다음과 같이 리스트 형태로 노드들의 연결 관계가 주어진다고 할 때 깊이 우선 탐색으로 이 노드들을 탐색했을 때의 순서를 공백으로 구분하여 출력하세요. /** * 깊이 우선 탐색 * @param {Object} graph 리스트 형태로 노드들의 연결 관계가 담긴 오브젝트 * @param {String} start 출발 노드(= 최상위 노드) * @returns {String} DFS 방법으로 탐색했을 때의 거치는 노드 순서 */ function DFS(graph, start) { let que..
제코베 JS 100제 / 70 / 행렬 곱하기
행렬 2개가 주어졌을 때 곱할 수 있는 행렬인지 확인하고 곱할 수 있다면 그 결과를 출력하고, 곱할 수 없다면 -1을 출력하는 프로그램을 만들어주세요. /** * 행렬 2개가 곱연산이 가능한지 판단하는 함수 * @param {Number[]} matrix1 * @param {Number[]} matrix2 * @returns {Boolean} 곱연산이 가능하다면 true, 불가능하다면 false 리턴 */ function isMultiplyPossible(matrix1, matrix2) { const [matrix1_row, matrix1_col] = [matrix1.length, matrix1[0].length]; const [matrix2_row, matrix2_col] = [matrix2.lengt..
제코베 JS 100제 / 69 / 골드바흐의 추측
골드바흐의 추측(Goldbach's conjecture)은 오래전부터 알려진 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 개의 소수(Prime number)의 합으로 표시할 수 있다는 것이다. 이때 하나의 소수를 두 번 사용하는 것은 허용한다. - 위키백과 위 설명에서 2보다 큰 모든 짝수를 두 소스의 합으로 나타낸 것을 골드바흐 파티션이라고 합니다. 예) 100 == 47 + 53 56 == 19 + 37 2보다 큰 짝수 n이 주어졌을 때, 골드바흐 파티션을 출력하는 코드를 작성하세요. * 해당 문제의 출력 형식은 자유롭습니다. 가능하시다면 골드바흐 파티션 모두를 출력하거나, 그 차가 작은 것을 출력하거나 그 차가 큰 것 모두 출력해보세요. /** * n까지의 인덱스를 가진 배열에서 n이 소수라..
제코베 JS 100제 / 68 / 버스 시간표
학교가 끝난 지원이는 집에 가려고 합니다. 학교 앞에 있는 버스 시간표는 너무 복잡해서 버스 도착 시간이 몇 분 남았는지 알려주는 프로그램을 만들고 싶습니다. 버스 시간표와 현재 시간이 주어졌을 때 버스 도착 시간이 얼마나 남았는지 알려주는 프로그램을 만들어주세요. - 버스 시간표와 현재 시간이 입력으로 주어집니다. - 출력 포맷은 "00시 00분"입니다. 만약 1시간 3분이 남았다면 "01시간 03분"으로 출력해야 합니다. - 버스 시간표에 현재 시간보다 이전인 버스가 있다면 "지나갔습니다."라고 출력합니다. /** * 버스 시간과 현재의 시간을 인자로 받아서 지나갔는지, * * 안지나갔다면 얼마나 남았는지 알려주는 함수 * * @param {String} bus_time 버스가 오는 시간 * @par..