PS

제코베 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..

제코베 JS 100제 / 67 / 민규의 악수
광장에서 모인 사람들과 악수를 하는 행사가 열렸습니다. 참가자인 민규는 몇명의 사람들과 악수를 한 후 중간에 일이 생겨 집으로 갔습니다. 이 행사에서 진행된 악수는 총 n번이라고 했을 때, 민규는 몇 번의 악수를 하고 집으로 돌아갔을까요? 그리고 민규를 포함한 행사 참가자는 몇 명일까요? - 악수는 모두 1대 1로 진행이 됩니다. - 민규를 제외한 모든 참가자는 자신을 제외한 참가자와 모두 한번씩 아굿를 합니다. - 같은 상대와 중복된 악수는 카운트 하지 않습니다. - 민규를 제외한 참가자는 행사를 모두 마쳤습니다. 예를들어 행사에서 59회의 악수가 진행되었다면 민규는 4번의 악수를 하였고 민규를 포함한 참가자는 12명이다. 행사에서 진행된 악수 횟수(n)를 입력으로 받으면 민규의 악수 횟수와 행사 참가..