반응형
깃허브: https://github.com/PSLeon24/Baekjoon/blob/main/1914.py
GitHub - PSLeon24/Baekjoon: Solve algorithm
Solve algorithm. Contribute to PSLeon24/Baekjoon development by creating an account on GitHub.
github.com
def move(no, x, y): # 옮겨 놓아야 할 원반 no개를 시작 기둥(x)에서 목표 기둥(y)으로 옮기는 함수 move()
if no > 1: # 원반이 1개를 초과할 경우
move(no - 1, x, 6 - x - y) # 가장 아래의 원반을 제외한 나머지 원반들을 시작 기둥(x)에서 중간 기둥(6-x-y)으로 이동시킨다.
# 중간 기둥을 6-x-y로 표현한 이유는 시작 기둥의 번호가 1, 중간 기둥의 번호는 2, 목표 기둥의 번호가 3이므로 기둥 번호의 합은 6이다.
# 이때, 시작 기둥과 목표 기둥이 어느 위치에 있든 항상 6 - 1(x) - 3(y) = 2(중간 기둥)이 나오기 때문에 위와 같이 구하였다.
print(f'{x} {y}') # 시작 기둥(x)에서 목표 기둥(y)으로 옮겼다는 것을 출력한다.
if no > 1:
move(no - 1, 6 - x - y, y) # 중간 기둥(6-x-y)으로 옮긴 원반들을 목표 기둥(y) 위에 다시 얹는다.
N = int(input())
print((2**N) - 1)
if N <= 20:
move(N, 1, 3) # 원반의 개수가 N개 일때
'Baekjoon' 카테고리의 다른 글
[Baekjoon] 1476 날짜 계산 (실버 V) - Python (0) | 2023.11.24 |
---|---|
[Baekjoon] 9012 - 괄호 with Python (0) | 2023.07.20 |
[Baekjoon] 9663번 N-Queen(Gold-IV) (0) | 2023.05.23 |
[Baekjoon] 단계별로 풀어보기 2. 조건문 with Python (0) | 2023.04.28 |
[Baekjoon] 단계별로 풀어보기 1. 입출력과 사칙연산 with Python (0) | 2023.04.28 |