목록프로그래머스/Lv.2 (76)
안녕하세요
숫자 변환하기 문제 보기 문제 풀이 1 (실패) DFS 첫 번째로 DFS(깊이 우선 탐색)를 이용하여 재귀적인 방식으로 문제를 해결하려 했습니다. 비효율적인 방법이라는 것은 인지하고 있지만, 일단 구현하기 위해서 시도한 방법입니다. y를 만들 수 있는 가능한 모든 경우의 수를 저장하고, 그 중에서 가장 작은 값을 찾아 반환하기로 했습니다. 그러나 이 방식은 n=1 y=1,000,000인 경우만 생각해보아도 경우의 수가 너무 많습니다. 결과는 예상대로 스택 오버플로우 에러가 발생합니다. 이미 계산된 값인 경우에는 종료시켜주기 위해서 Map 객체로 값을 메모하기도 했지만 어림도 없었습니다. function solution(x, y, n) { let result = []; const bfs = (num, co..
택배상자 문제와 풀이 1) 메인벨트, 보조벨트 가 있다. main = [5,4,3,2,1] support = [] 2) 벨트는 일렬로 되어 있고 상자는 입구의 하나만 꺼낼 수 있다. => pop()만 가능 sideBelt.push(mainBelt.pop()); 3) 상자는 바닥에 놓으면 안된다. 4) 메인벨트에서 보조벨트로 상자를 옮길 수 있다. main => support main = [5,4,3,2] support = [1] // 메인벨트에 상자가 남아 있지만, 목표대상이 없으면 [메인벨트 => 보조벨트] if (mainBelt.at(-1) && sideBelt.at(-1) !== order[index] && mainBelt.at(-1) !== order[index]) { sideBelt.push(m..
하노이의 탑 문제 요약 목표: 1번에 있는 n개의 원반을 3번으로 옮겨라. 규칙1. 한 번에 하나만 옮긴다. 규칙2. 작은 원반 위에 큰 원반이 있을 수 없다. 재귀는 이해를 못하겠습니다. https://www.youtube.com/watch?v=uSSC0aKXbWQ&t=651s function solution(n) { const answer = []; const hanoi = (plate, start, via, end) => { // 원반이 1개라면 목적지로 옮긴다. if (plate === 1) { answer.push([start, end]); return; } // n-1개의 원반을 경유지로 옮겨야 한다. hanoi(plate - 1, start, end, via); // 그리고 시작점에 있는 제..
전력망을 둘로 나누기 문제 설명 n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결되어 있습니다. 당신은 이 전선들 중 하나를 끊어서 현재의 전력망 네트워크를 2개로 분할하려고 합니다. 이때, 두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 합니다. 송전탑의 개수 n, 그리고 전선 정보 wires가 매개변수로 주어집니다. 전선들 중 하나를 끊어서 송전탑 개수가 가능한 비슷하도록 두 전력망으로 나누었을 때, 두 전력망이 가지고 있는 송전탑 개수의 차이(절대값)를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 2 이상 100 이하인 자연수입니다. wires는 길이가 n-1인 정수형 2차원 배열입니다. wires의 각 원소는 [v1, v2] 2개의 자연수로 이루어져 ..