https://school.programmers.co.kr/learn/courses/30/lessons/12946
기본 원리
1. 원반이 한 개일 때 (n=1)
시작 지점에서 끝 지점으로 바로 이동 합니다.
2. 원반이 n 개일 때
1) 1번 기둥에 있는 n개 원반 중 n-1 개를 2번 기둥으로 옮깁니다.
2) 1번 기둥에 남아 있는 가장 큰 원반을 3번 기둥으로 옮깁니다.
3) 2번 기둥에 남아 있는 n-1 개의 원반을 3번 기둥으로 옮깁니다.
n개 원반을 옮기려면 n-1개 원반을 옮기는 문제를 해결해야 하므로 전형적인 재귀 호출 알고리즘을 적용해야 합니다.
풀이
def solution(n):
answer = []
def hanoi(n, start, end, via):
if n == 1:
answer.append([start, end])
return
hanoi(n-1, start, via, end)
answer.append([start, end])
hanoi(n-1, via, end, start)
hanoi(n, 1, 3, 2)
return answer
참고
https://shoark7.github.io/programming/algorithm/tower-of-hanoi
'Coding Test > 프로그래머스' 카테고리의 다른 글
[Level 1] / [Python] 약수의 합 (0) | 2022.10.12 |
---|---|
[Level 1] / [Python] 짝수와 홀수 (0) | 2022.10.12 |
[Level 2] / [Python] 전력망을 둘로 나누기 (0) | 2022.10.12 |
[Level 2] / [Python] 두 큐 합 같게 만들기 (0) | 2022.10.11 |
[Level 2] / [Python] 가장 큰 사각형 찾기 - DP (Dynamic Programming) (0) | 2022.10.10 |