분류 전체보기
제코베 JS 100제 / 73 / 최단 경로 찾기
다음과 같이 노드의 연결 관계가 리스트 형태로 주어집니다. 그다음 경로를 구할 두 정점이 공백으로 구분되어 주어질 것입니다. 두 정점 사이를 이동할 수 있는 최단 거리를 출력하는 프로그램을 작성해 주세요. 이때 최단 거리란, 정점의 중복 없이 한 정점에서 다른 정점까지 갈 수 있는 가장 적은 간선의 수를 의미합니다. /** * 그래프와 시작노드, 도착노드를 입력받아 시작노드로부터 도착노드까지의 * * 최단 경로를 구하는 함수 * @param {Object} graph 리스트 형태로 주어진 노드의 연결 관계 * @param {String} start 시작 노드 * @param {String} end 도착 노드 * @returns {Number} 최단 거리 */ function findTheShortestP..
백준 / 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이 소수라..