๐๋ฌธ์ ๋งํฌ: https://www.acmicpc.net/problem/11729
๐ผ์๋ก
์์ ์ ํ๋ฒ ๋ง๋ณด๋ค๊ฐ ์ ๋ชจ๋ฅด๊ฒ ์ด์ ๋ถ๋งํฌ ๋จ๊ธฐ๊ณ ์๋ ๋ฌธ์ ์๋๋ฐ, ์คํฐ๋๋ฅผ ํตํด ์ฑ ์๊ฐ์ ๊ฐ๊ณ ๋ค์ ํ์ด๋ณด๊ธฐ ์ํด ์ด ๋ฌธ์ ๋ฅผ ์คํฐ๋์์ ํํ๋ค
๐งฉ๋ฌธ์ ํด์
์ฌ๊ท! ํ๋ฉด ๋น ์ง ์ ์๋ ํ๋ ธ์ดํ
์ํ์ ๊ฐฏ์๊ฐ ์ฃผ์ด์ก์ ๋ ์ด๋ํ์์ ์ด๋๊ฒฝ๋ก๋ฅผ ์ถ๋ ฅํ์์ค
๐์ํ ์ด๋ ํ์
์ํ์ ์ด๋ ํ์ ๊ตฌํ๋ ๊ฒ์ ์ฝ๊ฒ ์ ์ถํด๋๋ค.
n๊ฐ์ ์ํ์ ์ด๋์ํค๋ ๊ฒ์ n-1๊ฐ์ ์ํ์ ์ด๋์ํจ๋ค์ ์ ์ผ ๋ฐ์ ์๋ ์ํ ํ๋๋ฅผ ๋ชฉํ ์ฅ๋์ ์ฎ๊ธฐ๊ณ ๋ค์ n-1๊ฐ์ ์ํ์ ์ด๋์ํค๋ ๊ฒ์ด๋ค.
์ฆ a(n) = a(n-1)+1+a(n-1) ์ธ๊ฒ์ด๋ค.
a(1) = 1, a(2)= 3 ์ด๋ค.
์ด๊ฒ ๋ด ์ฝ๋์์๋ ํจ์ hanoi_top_cnt() ๋ก ๊ตฌํ๋์๋ค.
๐โ๏ธ์ํ ์ด๋ ๊ฒฝ๋ก๐โ๏ธ
์ด๋ ค์ด ๊ฒ์ ์ด๋ถ๋ถ์ด์๋ค. ์ด์ฌํ A4์ฉ์ง์ ๋์ ๋์ ํ์ฌ ๊ท์น์ ์์๋ด๋๋์๋ ์ฑ๊ณตํ์ง๋ง ์ฝ๋๊ตฌํ๊น์ง๋ ์์ฝ๊ฒ๋ ์คํจํ์๋ค. ๋ด๋ฒ์ ๋ค์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๋์ ํด๋ณผ๊ฒ์ด๋ท!
๋์๋ ๋ค์๋ฒ์๋ ํฐ์คํ ๋ฆฌ์ ๊ฐ์ํ ๊ฑฐ ์๊ฐํ๊ณ ์กฐ๊ธ๋ ์์๋ณด๊ธฐ ์ฝ๊ณ ๊ฐ๊ฒฐํ๊ฒ ์ ์ด์ผ์ง..ใ ์๋ฌด์๊ฐ์์ด ์ ๊ณ ์ฌ๋ ค๋ณด๋ ๋๋ฌด ๋์ก(?)
์ํ ์ด๋์ ๊ธฐ๋ณธ์ ์ธ ๋งค์ปค๋์ฆ์ ์์ ๋งํ๋ค์ํผ ์ํ n๊ฐ๊ฐ ์์ผ๋ฉด ์ํ n-1๊ฐ๋ฅผ ๋ชฉํ ์ฅ๋๊ฐ ์๋ ๋๋จธ์ง ์ฅ๋์ ์ฎ๊ธฐ๊ณ ์ ์ผ ํฐ ์ํ์ ๋ชฉํ ์ฅ๋์ ์ฎ๊ธฐ๊ณ , ๋ค์ n-1๊ฐ์ ์ํ์ ๋ชฉํ ์ฅ๋์ ์ฎ๊ธด๋ค.
1. n-1๊ฐ์ ์ํ์ ๋ชฉํ์ฅ๋๊ฐ ์๋ ๋๋จธ์ง ์ฅ๋์ ์ฎ๊น
2. ์ ์ผ ํฐ ์ํ์ ๋ชฉํ ์ฅ๋๋ก ์ฎ๊น
3. n-1๊ฐ์ ์ํ์ ๋ชฉํ์ฅ๋๋ก ์ฎ๊น
์ด๊ฒ์ด ํ๋ ธ์ด ํ ์ํ์ ์ฎ๊ธฐ๋ ์ต์๊ฒฝ๋ก์ด๋ค.
์ค๊ฐ์ 6-start-end๊ฐ ๋ณด์ด๋๋ฐ ์ด๊ฒ์ด ์๋ฏธํ๋ ๋ฐ๋ "ํ์ฌ ์๋๊ณณ๋ ์๋๊ณ ๊ทธ๋ฆฌ๊ณ ๋ชฉํ์ง์ ์ด ์๋ ๊ณณ" ์ด๋ค.
์ฅ๋๊ฐ 1,2,3 ์ด๋ ๊ฒ ์๋ค. ํ์ฌ n๊ฐ์ ์ํ์ด 1์ ์์นํ๊ณ ๋ง์ง๋ง ์ํ์ 3์ ์์น์์ผ์ผ ํ๋ค๋ฉด, n-1๊ฐ์ ์ํ์ 2์ ์์น์์ผ์ผ ํ๋ค. ์ฆ ํ์ฌ์์น(1)์ ๋ชฉํ์ฅ๋(3)๊ฐ ์๋ ๊ณณ์ผ๋ก n-1์ ์ด๋์์ผ์ผ ํ๋๋ฐ ์ฅ๋๋ 1,2,3๊ฐ ์๊ธฐ์ 6-1-3 ํ๋ฉด n-1์ํ์ ์ด๋์์น(2)๊ฐ ๋์จ๋ค.
๐ป์ฝ๋
def hanoi_top_move(n, start, end):
if n == 1:
print(start, end)
return
hanoi_top_move(n-1, start, 6-start-end)
print(start, end)
hanoi_top_move(n-1, 6-start-end, end)
def hanoi_top_cnt(n):
if n == 1:
return 1
else:
return hanoi_top_cnt(n-1)*2 + 1
n = int(input())
print(hanoi_top_cnt(n))
hanoi_top_move(n, 1, 3)
'Problem Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1673๋ฒ: ๐์นํจ ์ฟ ํฐ๐ - ํ์ด์ฌ (2) | 2022.04.26 |
---|---|
[๋ฐฑ์ค] 1907๋ฒ: ํ์ ํํฉ๋ฌผ (0) | 2022.04.25 |
[๋ฐฑ์ค] 10250๋ฒ: ACM ํธํ - ํ์ด์ฌ (0) | 2022.04.24 |
[๋ฐฑ์ค] 1417๋ฒ: ๊ตญํ์์ ์ ๊ฑฐ - ํ์ด์ฌ (0) | 2022.04.23 |
[๋ฐฑ์ค] 16165๋ฒ: ๊ฑธ๊ทธ๋ฃน ๋ง์คํฐ ์ค์์ด - ํ์ด์ฌ (0) | 2022.04.22 |