백준 11729번 하노이의 탑-JS

하 진짜 머리터지겠네

- 제출한 코드

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
//9:52
let N = Number(input[0]);
let K = 0;
let answer = '';
// 원반 갯수, 출발지 기둥, 목적지 기둥, 나머지 기둥
function hanoi(num, from, to, other) {
    if(num === 0) {
        return;}
    hanoi(num-1, from, other, to);
    // console.log(`${from} ${to}`);
    answer += `${from} ${to}` + '\n';
    K++;
    hanoi(num-1, other, to, from);
}

hanoi(N,1,3,2)
console.log(K);
console.log(answer);

알듯말듯 이수준이 아니라 죽어도 재귀로 못풀겠다는 빠른 판단 후 유튜브에 하노이의 탑 설명한 거 보고 만듬.
참고영상
하 진짜 선언적 프로그래밍? 하하 뭐죠그게?
정의와 목적 그에 필요한 요소들만 적어주면 컴퓨터가 알아서 후루룩 하는거라고 했다.
이 풀이를 설명하자면
원반의 갯수가 0이되면 그만 두는 것이다.(옮겨야 할 걸 다옮겼다는 뜻이니)
원반 갯수, 출발지 기둥의 번호, 목적지 기둥의 번호, 나머지 기둥의 번호 이렇게를 매개변수로 갖는다.
첫번째 함수 hanoi를 실행시키는 것은 무슨말이냐
1. 원반의 갯수-1개의 원반을 from에서 other로 옮기고 그 밑에 제일 큰 거를 from에서 to로 옮긴다.
2. 위치가 이동된 제일 큰 원반 위에 원반의 갯수-1개들을 그 위로 쌓는다. 이과정 반복

좋은 웹페이지 즐겨찾기