우당탕탕 개발일기
[javascript] 백준 11729번 하노이 탑 이동 순서 본문
728x90
📝 문제
https://www.acmicpc.net/problem/11729
✍🏻 풀이
옛날에 재밌게 했던 컵에 있는 물 옮겨담는 게임같은 느낌! 예제와 출력을 통해 어떤 것을 구해야하는지 파악부터 했다.
3
입력값 3은 첫째 줄에 첫 번째 장대에 쌓인 원판의 개수 N (1 ≤ N ≤ 20)을 의미한다.
이걸 세번째 장대에 옮기는 횟수와 옮긴 과정(장대 번호, 옮긴 원판 번호) 을 출력하면 된다.
7
1 3
1 2
3 2
1 3
2 1
2 3
1 3
💡 코드
let fs = require('fs');
let input = fs.readFileSync("/dev/stdin").toString();
let N = Number(input); // 원판의 갯수
let count = 0;
let answer = [];
// num : 원반의 개수
// from : 출발 장대 번호
// to : 목적지 장대 번호
// other : 나머지 장대 번호
function Hanoi(num, from, other, to){
if(num === 0) {
return;
}else{
// 받아온 원반 갯수보다 하나 적은 원반들을 목적지가 아닌 곳으로 재귀적으로 이동
Hanoi(num - 1 , from, to, other);
// 맨 아래 원반을 목적지 장대로 이동시킴
answer.push([from, to]);
count++;
// 나머지 장대로 옮겼던 원반들을 그 위에 얹음
Hanoi(num - 1, other, from, to);
}
}
Hanoi(N, '1','2','3');
console.log(count);
console.log(answer.map((element) => element.join(" ")).join("\n"));
📍 참고
https://nyang-in.tistory.com/210
728x90
'What I Learned > Algorithm' 카테고리의 다른 글
[javascript] 백준 9184번 신나는 함수 실행 (0) | 2022.03.24 |
---|---|
[javascript] 백준 1003번 피보나치 함수 (0) | 2022.03.21 |
[javascript] 백준 11050번 이항 계수 1 (0) | 2022.03.15 |
[javascript] 백준 9012번 괄호 (0) | 2022.03.10 |
[javaScript] 백준 10773번 제로 (0) | 2022.03.07 |