본문 바로가기

개발/algorithm

[프로그래머스] [level3] 하노이의 탑 - python

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/12946

 

코딩테스트 연습 - 하노이의 탑

하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대

programmers.co.kr

 

풀이 

재귀 함수 문제 

1. a에 있는 n-1 개의 원반을 c를 거쳐 b로 옮긴다.

2. a에 남은 가장 아래 있는 원반을 c로 옮긴다. 

3. b로 옮겼던 n-1 개의 원반을 a를 거쳐 c로 옮긴다.

위 과정을 다 옮길 때까지 반복 

answer = []

def hanoi(n, f, to, sub):
    if n == 1 :
        answer.append((f, to))
        return
    # 1번 과정 
    hanoi(n-1, f, sub, to)
    # 2번 과정 
    answer.append((f,to))
    # 3번 과정 
    hanoi(n-1, sub, to, f)
        
def solution(n):
    hanoi(n, 1, 3, 2)
    return answer