반응형

프로그래머스 55

[프로그래머스/JavaScript] Lv.2 숫자 카드 나누기

해당 문제는 최대 공약수를 구해 비교하는 문제이다. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/135807 1. 유클리드 알고리즘(유클리드 호제법) 유클리드 호제법은 두 자연수 사이의 최대공약수를 구하는 알고리즘이다. * 정의 어떤 자연수 a, b가 있을 때 (a > b), 두 수의 최대공약수는 a를 b로 나눈 나머지와 b의 최대공약수와 같다. 1) 두 수 중에서 큰 수를 작은 수로 나눈다. 2) 만약 나누고 난 나머지가 0이라면 작은 수가 최대공약수이다. 3) 만약 나머지가 0 이 아니라면, 작은 수를 다시 나머지로 나눈다. 4) 이를 반복해서 나머지가 0 이 될 때, 그 수가 바로 두 수의 최대공약수이다. 2. 문제 풀이 // arra..

Algorithm 2022.11.17

[프로그래머스/JavaScript] Lv.3 여행경로

해당 문제는 DFS문제로 조건에 따른 경우의 수를 구하는 문제이다. BFS 사용 예 - 최단거리, 최소 횟수, 미로, 탐색 등 DFS 사용 예 - 경우의 수, 이동 과정에 제약 있음 등 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/43164 1. DFS 과정 2. 풀이 var answer = []; function solution(tickets) { // 1) 알파벳 순서에 따른 정렬 let ticketsSort = tickets.sort(); // 2) ICN에서 출발하기 때문에 ICN 담고 시작한다. return dfsPlan("ICN", ticketsSort, ["ICN"]); } function dfsPlan(ticket, ti..

Algorithm 2022.11.11

[프로그래머스/JavaScript] Lv.3 아이템 줍기

해당 문제는 BFS문제로 최단 거리를 구하는 문제이다. BFS 사용 예 - 최단거리, 최소 횟수, 미로, 탐색 등 DFS 사용 예 - 경우의 수, 이동 과정에 제약 있음 등 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/87694 function solution(rectangle, characterX, characterY, itemX, itemY) { // 1) 좌표를 2배로 늘린다. characterX *= 2; characterY *= 2; itemX *= 2; itemY *= 2; let dobuleRec = rectangle.map(rec => rec.map(point => point * 2)); // 2) 위, 아래, 우측, 좌..

Algorithm 2022.11.08

[프로그래머스/JavaScript] Lv.3 단위변환

해당 문제는 BFS문제로 최소 횟수를 구하는 문제이다. BFS 사용 예 - 최단거리, 최소 횟수, 미로, 탐색 등 DFS 사용 예 - 경우의 수, 이동 과정에 제약 있음 등 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/43163 function solution(begin, target, words) { // 1) 중복 방지를 위해 변환한 알파벳을 담을 배열 선언 const visited = []; // 2) 큐에 최초 알파벳과 위치를 담는다. const queue = [[begin, 0]]; // 3) 큐에 값이 있으면 반복 while(queue.length > 0){ // 4) 큐에 담긴 최근 값(shift) 가져오기 let [w, ..

Algorithm 2022.11.03

[프로그래머스/JavaScript] Lv.2 게임 맵 최단거리

최단거리를 구하는 문제로 너비 우선 탐색(BFS) 문제 유형이다. ( 최단거리는 BFS !!) BFS 란? 현재 정점에 연결된 가까운 점들부터 탐색하는 방법으로 큐를 이용해서 구현한다. function solution(maps) { let answer = 1; let queue = []; const dx = [-1, 1, 0, 0]; const dy = [0, 0, -1, 1]; const n = maps.length; const m = maps[0].length; // 시작 위치 담기 queue.push([0, 0]); // 지나간 위치를 0으로 막는다.(시작 위치도 지나간 위치 이므로 막음) maps[0][0] = 0; // 큐에 담긴 값이 없을 때까지 반복한다. while(queue.length >..

Algorithm 2022.10.28
반응형