반응형
프로그래머스의 레벨 2 문제 하노이의 탑
문제 요구 조건
큰 원판이 작은 원판 위에 올 수 없는 규칙에 맞춰 원판을 옮겨야 한다.
풀이 방법
- 가장 큰 원판 위의 n-1개의 원판들을 임시 기둥으로 옮긴다.
- 가장 큰 원판을 목표 기둥으로 옮긴다.
- 임시 기둥의 원판들을 같은 방법으로 목표 기둥으로 옮긴다.
위의 방법을 재귀호출해서 해결했다.
# n-1개의 원판들을 임시 기둥으로 옮기고
# 가장 큰 원판을 목표 기둥으로 옮긴 후에
# 임시 기둥의 원판들을 목표 기둥으로 옮기자
answer = []
def hanoi(n, from_, to):
global answer
if n == 1:
answer.append([from_, to])
return None
for i in range(1, 4):
if i not in [from_, to]:
temp = i
hanoi(n-1, from_, temp)
answer.append([from_, to])
hanoi(n-1, temp, to)
def solution(n):
hanoi(n, 1, 3)
return answer
반응형
'Computer science > Algorithm' 카테고리의 다른 글
[프로그래머스] Python3 - 혼자 놀기의 달인 (0) | 2024.01.29 |
---|---|
[프로그래머스] Python3 - 최솟값 만들기 (0) | 2023.12.05 |
[프로그래머스] Python3 - 올바른 괄호 (0) | 2023.11.16 |
[프로그래머스] Python3 - 기능개발 (1) | 2023.11.15 |
[프로그래머스] Python3 - 의상 (0) | 2023.11.14 |