11729๋ฒ: ํ๋ ธ์ด ํ ์ด๋ ์์
์ธ ๊ฐ์ ์ฅ๋๊ฐ ์๊ณ ์ฒซ ๋ฒ์งธ ์ฅ๋์๋ ๋ฐ๊ฒฝ์ด ์๋ก ๋ค๋ฅธ n๊ฐ์ ์ํ์ด ์์ฌ ์๋ค. ๊ฐ ์ํ์ ๋ฐ๊ฒฝ์ด ํฐ ์์๋๋ก ์์ฌ์๋ค. ์ด์ ์๋์น๋ค์ด ๋ค์ ๊ท์น์ ๋ฐ๋ผ ์ฒซ ๋ฒ์งธ ์ฅ๋์์ ์ธ ๋ฒ์งธ ์ฅ๋๋ก
www.acmicpc.net
n๊ฐ์ ์ํ์ 1๋ฒ ์ฅ๋์์ 3๋ฒ ์ฅ๋๋ก ์ฎ๊ธฐ๋ ค๋ฉด
1. n-1๊ฐ์ ์ํ์ 1๋ฒ ์ฅ๋(์ถ๋ฐ)์์ 2๋ฒ ์ฅ๋(์ค๊ฐ)๋ก ์ฎ๊ธด๋ค : ์ฌ๊ท
2. ๊ฐ์ฅ ํฐ ์ํ์ 1๋ฒ ์ฅ๋(์ถ๋ฐ)์์ 3๋ฒ ์ฅ๋(๋์ฐฉ)๋ก ์ฎ๊ธด๋ค
3. n-1๊ฐ์ ์ํ์ 2๋ฒ ์ฅ๋(์ค๊ฐ)์์ 3๋ฒ ์ฅ๋(๋์ฐฉ)๋ก ์ฎ๊ธด๋ค : ์ฌ๊ท
3๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๊ณ ์ด 2^n + 1๋ฒ ์ด๋์ด ํ์ํ๋ค.
์ ๊ณผ์ ์ ๊ตฌํํ๋ฉด hanoi(n, start, middle, goal) ์ด ๋๋ค.
# 11729.py
def hanoi(n, start, middle, goal):
if n == 1:
print(f'{start} {goal}')
else:
hanoi(n-1, start, goal, middle)
print(f'{start} {goal}')
hanoi(n-1, middle, start, goal)
n = int(input())
print(2 ** n - 1)
hanoi(n, 1, 2, 3)