728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/12946
문제 풀이 방법
이 문제는 모 부트캠프 코테를 보며 기억에 남은 문제중 한개이다.
하노이의 탑 문제는 기본적으로 재귀 함수를 사용해 풀어야 하는 문제이며, 나는 이걸 이해하기 힘들었다.
문제에서 중요한 것은 제일 큰 원판을 제외한 나머지 원판들은 목적지가 아닌 경유지에 모두 있어야 하고, 제일 큰 원판을 옮긴 뒤 나머지 원판들도 경유지를 거쳐 목적지로 옮겨야 한다는 것이다.
이 때, 재귀 함수가 2번 사용된다.
- 제일 큰 원판을 제외한 나머지 원판들을 경유지로 옮길 때
- 제일 큰 원판을 옮긴뒤 나머지 원판들을 목적지로 옮길 때
완성된 코드
const solution = (n) => {
let answer = [];
const hanoi = (n, from, to, via) => {
if(n === 1) answer.push([from, to]);
else{
hanoi(n-1, from, via, to);
answer.push([from, to]);
hanoi(n-1, via, to, from);
}
}
hanoi(n, 1, 3, 2);
return answer;
}
참고 링크
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 2Level / 2021 Dev-Matching: 웹 백엔드 개발자(상반기) / 행렬 테두리 회전하기 (0) | 2023.10.26 |
---|---|
[JS] 1Level / 연습문제 / 명예의 전당(1) (0) | 2023.10.24 |
[JS] 3Level / 연습문제 / 숫자 타자 대회 (1) | 2023.10.20 |
[JS] 1Level / 연습문제 / 추억 점수 (0) | 2023.10.19 |
[JS] 1Level / 연습문제 / 콜라 문제 (1) | 2023.10.17 |