[백준 | Javascript] 11729

박기영·2022년 7월 3일
0

백준

목록 보기
72/127
post-custom-banner

재귀. 5단계
11729번. 하노이 탑 이동 순서

문제

11729번 문제 링크

solution

const fs = require("fs");
const input = Number(fs.readFileSync("/dev/stdin").toString().trim());

let count = 0;
let answer = [];

// input : 원반의 개수
// from : 출발지 기둥 번호
// to : 목적지 기둥 번호
// other : 나머지 기둥 번호

function Hanoi(num, from, other, to){
  // num - 1이 음수가 되면 안되므로 num == 0이라면 함수 종료
  if(num === 0) {
    return;
  } else {
    // num번 원반 바로 위에 있는 원반을 목적지가 아닌 곳으로 이동
    Hanoi(num - 1 , from, to, other);
    
    // 맨 아래 원반을 목적지로 이동시킴
    answer.push([from, to]);
    
    // 수행 횟수 증가
    count++;
    
    //다른 곳으로 옮겼던 원반들을 그 위에 얹음
    Hanoi(num - 1, other, from, to);
  }
}

Hanoi(input, 1, 2, 3);

// 수행 횟수 출력
console.log(count);

console.log(answer.map((element) => element.join(" ")).join("\n"));

해설

재귀 문제들이 하나같이 어려운 것 같다. 접근조차 못하는 경우가 많아졌다..
다른 분 풀이를 보고 풀었다.
설명을 그림과 같이 이해하기 쉽게 해주셔서 바로 이해가 됐다.

profile
나를 믿는 사람들을, 실망시키지 않도록
post-custom-banner

0개의 댓글