๋ฌธ์
์ธ ๊ฐ์ ์ฅ๋๊ฐ ์๊ณ ์ฒซ ๋ฒ์งธ ์ฅ๋์๋ ๋ฐ๊ฒฝ์ด ์๋ก ๋ค๋ฅธ n๊ฐ์ ์ํ์ด ์์ฌ ์๋ค. ๊ฐ ์ํ์ ๋ฐ๊ฒฝ์ด ํฐ ์์๋๋ก ์์ฌ์๋ค. ์ด์ ์๋์น๋ค์ด ๋ค์ ๊ท์น์ ๋ฐ๋ผ ์ฒซ ๋ฒ์งธ ์ฅ๋์์ ์ธ ๋ฒ์งธ ์ฅ๋๋ก ์ฎ๊ธฐ๋ ค ํ๋ค.
- ํ ๋ฒ์ ํ ๊ฐ์ ์ํ๋ง์ ๋ค๋ฅธ ํ์ผ๋ก ์ฎ๊ธธ ์ ์๋ค.
- ์์ ๋์ ์ํ์ ํญ์ ์์ ๊ฒ์ด ์๋์ ๊ฒ๋ณด๋ค ์์์ผ ํ๋ค.
์ด ์์ ์ ์ํํ๋๋ฐ ํ์ํ ์ด๋ ์์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. ๋จ, ์ด๋ ํ์๋ ์ต์๊ฐ ๋์ด์ผ ํ๋ค.
์๋ ๊ทธ๋ฆผ์ ์ํ์ด 5๊ฐ์ธ ๊ฒฝ์ฐ์ ์์์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ฒซ ๋ฒ์งธ ์ฅ๋์ ์์ธ ์ํ์ ๊ฐ์ N (1 ≤ N ≤ 20)์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฎ๊ธด ํ์ K๋ฅผ ์ถ๋ ฅํ๋ค.
๋ ๋ฒ์งธ ์ค๋ถํฐ ์ํ ๊ณผ์ ์ ์ถ๋ ฅํ๋ค. ๋ ๋ฒ์งธ ์ค๋ถํฐ K๊ฐ์ ์ค์ ๊ฑธ์ณ ๋ ์ ์ A B๋ฅผ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ถ๋ ฅํ๋๋ฐ, ์ด๋ A๋ฒ์งธ ํ์ ๊ฐ์ฅ ์์ ์๋ ์ํ์ B๋ฒ์งธ ํ์ ๊ฐ์ฅ ์๋ก ์ฎ๊ธด๋ค๋ ๋ป์ด๋ค.
์ ๋ต
def hanoi(n, from_pos, to_pos, aux_pos): #from : ์ถ๋ฐ / to : ๋์ฐฉ / aux : ๋ณด์กฐ
if n == 1:
print(from_pos, to_pos)
return
hanoi(n - 1, from_pos, aux_pos, to_pos)
print(from_pos, to_pos)
hanoi(n - 1, aux_pos, to_pos, from_pos)
n = int(input())
# N์ธต์ง๋ฆฌ ํ๋
ธ์ด์ ํ์ ์ฎ๊ธฐ๋ ค๋ฉด 2^N - 1 ๋ฒ ์ฎ๊ฒจ์ผํ๋ค.
result = 1
for i in range(1, n+1):
result = result * 2
print(result - 1)
hanoi(n, 1, 3, 2)
์๋ฐ์ด ํ ๊ฐ๋ฉด ๊ทธ๋ฅ ์ฎ๊ธฐ๋ฉด ๋๋๋ค.
๋ง์ฝ ์๋ฐ์ด N๊ฐ์ผ ๊ฒฝ์ฐ
1. 1๋ฒ ๊ธฐ๋ฅ์ ์๋ N๊ฐ์ ์๋ฐ ์ค N-1๊ฐ ๋ฅผ 2๋ฒ ๊ธฐ๋ฅ์ผ๋ก ์ฎ๊ธด๋ค.
(์ด๋ 3๋ฒ ๊ธฐ๋ฅ์ ๋ณด์กฐ ๊ธฐ๋ฅ์ผ๋ก ์ฌ์ฉํ๋ค.)
2. 1๋ฒ ๊ธฐ๋ฅ์ ๋จ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฐ์ 3๋ฒ ๊ธฐ๋ฅ์ผ๋ก ์ฎ๊ธด๋ค.
3. 2๋ฒ ๊ธฐ๋ฅ์ ์๋ N-1๊ฐ ์๋ฐ์ ๋ค์ 3๋ฒ ๊ธฐ๋ฅ์ผ๋ก ์ฎ๊ธด๋ค.
(์ด๋ 1๋ฒ ๊ธฐ๋ฅ์ ๋ณด์กฐ ๊ธฐ๋ฅ์ผ๋ก ์ฌ์ฉํ๋ค.)
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 1427 - ์ํธ์ธ์ฌ์ด๋ (0) | 2020.08.20 |
---|---|
[Python] ๋ฐฑ์ค 1436 - ์ํ๊ฐ๋ ์ (0) | 2020.08.19 |
[Python] ๋ฐฑ์ค 11654 - ์์คํค ์ฝ๋ (0) | 2020.08.16 |
[Python] ๋ฐฑ์ค 11399 - ATM (0) | 2020.08.13 |
[Python] ๋ฐฑ์ค 11047 - ๋์ 0 (0) | 2020.08.12 |