[프로그래머스] 하노이의 탑 (DP)

쿼카쿼카·2023년 7월 15일
0

알고리즘

목록 보기
66/67

문제

코드

function solution(n) {
    const ans = [];
    const funcObj = {
        move2(c, t, l) {
            ans.push([c, l], [c, t], [l, t])
        }
    };
    
    for(let i=3; i<=n; i++) {
        funcObj['move' + i] = (c, t, l) => {
            funcObj['move' + (i-1)](c, l, t);
            ans.push([c, t]);
            funcObj['move' + (i-1)](l, t, c);
        }
    }
    
    funcObj['move' + n](1, 3, 2);
    
    return ans;
}

패턴만 알면 간단한 문제

뇌가 파업중이라 패턴 찾는데 오래걸림....

  • 피보나치처럼 dp로 풀었다.
  • c는 current로 이동을 시작할 막대기
  • t는 target으로 옮겨질 막대기
  • l은 last로 그냥 나머지다.
  • 2개일 때의 패턴은 쉬워서 funcObj에 담아둔다.
  • 3개일 때부터 이전 이동 방식에서 c, l, t로 바꿔준다.
  • [c, t]를 따로 넣어준다.
  • 다시 l, t, c를 돌려주면 완성이다.

여기선 성공했지만 시간이 쭉쭉 늘어나는 걸 볼 수 있다.

profile
쿼카에요

0개의 댓글