๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์‹ค์Šต

์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์‹ค์Šต - [2] ์žฌ๊ท€ ์‹ค์Šต๋ฌธ์ œ - ํ•˜๋…ธ์ดํƒ‘ (2)

์žฌ๊ท€๋ฌธ์ œ ์ค‘ 'ํ•˜๋…ธ์ด์˜ ํƒ‘' ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ๋งจ ์ฒ˜์Œ์—๋Š” ํ•˜๋…ธ์ด์˜ ํƒ‘์„ ์žฌ๊ท€๋กœ ํ‘ผ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

์–ด๋А ๋ถ€๋ถ„์—์„œ ์žฌ๊ท€๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ณด์ž.


๊ทœ์น™ ์ฐพ๊ธฐ

๋จผ์ € ํ•˜๋…ธ์ด์˜ ํƒ‘์—๋Š” ๊ทœ์น™์ด ์กด์žฌํ•œ๋‹ค.

1. ํ•œ ๋ฒˆ์— ํ•œ๊ฐœ์˜ ์›ํŒ๋งŒ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
2. ํฐ ์›ํŒ์ด ์ž‘์€ ์›ํŒ ์œ„์— ์žˆ์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.

๋จผ์ € ์›ํŒ์ด 1๊ฐœ์ธ ๊ฒฝ์šฐ๋ถ€ํ„ฐ ์ƒ๊ฐํ•ด๋ณด์ž.

์›ํŒ์ด 1๊ฐœ์ธ ๊ฒฝ์šฐ์˜ ํ•˜๋…ธ์ด ํƒ‘

์›ํŒ์ด 1๊ฐœ์ธ ๊ฒฝ์šฐ ๋‹จ์ˆœํ•˜๊ฒŒ A์—์„œ C๋กœ ์˜ฎ๊ฒจ์ฃผ๋ฉด ๋œ๋‹ค. ๋ฒ ์ด์Šค ์ผ€์ด์Šค๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค!

 

๊ทธ๋Ÿผ ์›ํŒ์ด ๋‘๊ฐœ์ธ ๊ฒฝ์šฐ๋ฅผ ๋ณด์ž.

์›ํŒ์ด 2๊ฐœ์ธ ๊ฒฝ์šฐ์˜ ํ•˜๋…ธ์ด ํƒ‘

์›ํŒ์ด ๋‘๊ฐœ์ธ ๊ฒฝ์šฐ, ํฐ ์›ํŒ์ด C์— ๋จผ์ € ๊น”๋ ค์•ผ ์ž‘์€ ์›ํŒ์ด ๊ทธ ์œ„์— ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € ํฐ ์›ํŒ์„ C๋กœ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•ด ์ž‘์€ ์›ํŒ์„ B๋กœ ์˜ฎ๊ธด๋‹ค. ์ดํ›„ ํฐ ์›ํŒ์„ C๋กœ ์˜ฎ๊ธด๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ž‘์€ ์›ํŒ์„ B์—์„œ C๋กœ ์˜ฎ๊ธด๋‹ค.

 

๊ทธ๋Ÿผ ์›ํŒ 3๊ฐœ์ธ ๊ฒฝ์šฐ๋„ ๋ณด์ž.

 

์ด๋ฒˆ์—๋Š” ์ข€ ๋” ํฐํ‹€์—์„œ ๋ฌธ์ œ๋ฅผ ๋ฐ”๋ผ๋ณด์ž.

๋จผ์ € ๊ฐ€์žฅ ํฐ ์›ํŒ์„ 3์ด๋ผ๊ณ  ํ•˜์ž. 3์ด C์— ๊น”๋ ค์•ผ ๋‚˜๋จธ์ง€ ๊ฒƒ๋“ค์ด ์œ„๋กœ ์˜ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋ฅผ ์œ„ํ•ด์„œ 3์„ ์ œ์™ธํ•œ 1,2๋ฅผ B๋กœ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค. B๋กœ ์˜ฎ๊ธด ํ›„ 3์„ C๋กœ ์˜ฎ๊ธด๋‹ค. ๊ทธ๋ฆฌ๊ณ  B์— ์žˆ๋Š” 1,2๋ฅผ C๋กœ ์˜ฎ๊ธด๋‹ค.

๋‹ค์‹œํ•œ๋ฒˆ ์ •๋ฆฌํ•˜์ž๋ฉด ์•„๋ž˜ ์„ธ๋‹จ๊ณ„๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ๊ฐ€์žฅ ํฐ ์›ํŒ 3์„ C์˜ ๊ฐ€์žฅ ์•„๋ž˜์— ๊น”๊ธฐ ์œ„ํ•ด, ๋‚˜๋จธ์ง€ ๊ฒƒ๋“ค์„ B๋กœ ์˜ฎ๊ธด๋‹ค. (๊ทธ๋ฆผ 1 ~ ๊ทธ๋ฆผ 4)
2. ๊ฐ€์žฅ ํฐ ์›ํŒ 3์„ C๋กœ ์˜ฎ๊ธด๋‹ค. ( ๊ทธ๋ฆผ 5 )
3. ๋‚˜๋จธ์ง€ ์›ํŒ์„ B์—์„œ C๋กœ ์˜ฎ๊ธด๋‹ค. ( ๊ทธ๋ฆผ 6 ~ ๊ทธ๋ฆผ 8)

๊ฐ€์žฅ ํฐ ์›ํŒ์„ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•œ ์ „์ฒ˜๋ฆฌ / ๊ฐ€์žฅ ํฐ ์›ํŒ ์˜ฎ๊ธฐ๊ธฐ / ๊ฐ€์žฅ ํฐ ์›ํŒ์„ ์˜ฎ๊ธด ํ›„ ํ›„์ฒ˜๋ฆฌ

 

๋งŒ์•ฝ ์›ํŒ์ด 4๊ฐœ๊ฐ€ ์žˆ๋‹ค๋ฉด?

๊ฐ€์žฅ ํฐ ์›ํŒ 4๋ฅผ C๋กœ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•ด

1. ๋‚˜๋จธ์ง€ 3๊ฐœ์˜ ์›ํŒ์„ B๋กœ ์˜ฎ๊ธฐ๊ณ  

2. ๊ฐ€์žฅ ํฐ ์›ํŒ 4๋ฅผ C๋กœ ์˜ฎ๊ธฐ๊ณ 

3. ๋‚˜๋จธ์ง€ ์›ํŒ์„ B์—์„œ C๋กœ ์˜ฎ๊ธด๋‹ค.

 

์ด๋ฅผ ์ผ๋ฐ˜ํ™” ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

N๊ฐœ์˜ ์›ํŒ์ด ์žˆ์„ ๋•Œ
1. N-1๊ฐœ์˜ ์›ํŒ์„ B๋กœ ์˜ฎ๊ธฐ๊ณ 
2. N๋ฒˆ์งธ ์›ํŒ์„ C๋กœ ์˜ฎ๊ธฐ๊ณ 
3. N-1๊ฐœ์˜ ์›ํŒ์„ C๋กœ ์˜ฎ๊ธด๋‹ค.

๊ทผ๋ฐ 1. N-1๊ฐœ์˜ ์›ํŒ์„ B๋กœ ์˜ฎ๊ธฐ๊ณ  ์—์„œ ๋˜ 3๊ฐœ์˜ ๋‹จ๊ณ„๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
1-1. N-2๊ฐœ์˜ ์›ํŒ์„ C๋กœ ์˜ฎ๊ธฐ๊ณ 
1-2. N-1๋ฒˆ์งธ ์›ํŒ์„ B๋กœ ์˜ฎ๊ธฐ๊ณ 
1-3. N-2๊ฐœ์˜ ์›ํŒ์„ B๋กœ ์˜ฎ๊ธด๋‹ค.

 

์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด ๊ฒฐ๊ตญ N๋ฒˆ์งธ ์›ํŒ์„ ์˜ฎ๊ธฐ๋ ค๋ฉด N-1๊ฐœ๋ฅผ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์˜ฎ๊ฒจ์•ผ ํ•˜๊ณ , N-1๋ฒˆ์งธ ์›ํŒ์„ ์˜ฎ๊ธฐ๋ ค๋ฉด N-2๊ฐœ์˜ ์›ํŒ์„ ์˜ฎ๊ฒจ์•ผ ํ•˜๊ณ , N-2๋ฒˆ์งธ ์›ํŒ์„ ์˜ฎ๊ธฐ๋ ค๋ฉด N-3๊ฐœ์˜ ์›ํŒ์„ ์˜ฎ๊ฒจ์•ผ ํ•˜๊ณ ... ๋งˆ์ง€๋ง‰์—” 1๊ฐœ์˜ ์›ํŒ์„ ์˜ฎ๊ธฐ๋Š” ์žฌ๊ท€๊ฐ€ ์ •์˜๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ N๋ฒˆ์งธ ์›ํŒ์„ ์˜ฎ๊ธธ ๋•Œ์™€ N-1๋ฒˆ์งธ ์›ํŒ์„ ์˜ฎ๊ธธ๋•Œ ์˜ฎ๊ธฐ๋Š” ๊ณณ์ด ๋‹ฌ๋ผ์ง„๋‹ค. ๋ชจ๋“  ์›ํŒ์˜ ์ตœ์ข… ๋ชฉ์ ์ง€๋Š” C๋กœ ์˜ฎ๊ฒจ๊ฐ€๋Š” ๊ฒƒ์ด์ง€๋งŒ, ๊ทธ ๊ณผ์ •์—์„œ ๊ผญ ๊ฑฐ์ณ๊ฐ€์•ผ ํ•˜๋Š” ๊ธฐ๋‘ฅ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ์ถœ๋ฐœ์ , ๋ชฉ์ ์ง€, ๊ฒฝ์œ ์ ์„ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.


ํ•จ์ˆ˜ ์ •์˜

def hanoi(N, start, end, via):
    if N == 1: # ์˜ฎ๊ธธ ์›ํŒ์ด 1๊ฐœ๋ฉด
        print(start, "->", end) # ์‹œ์ž‘์ ์—์„œ ๋„์ฐฉ์ ์œผ๋กœ ์ด๋™
    else: # ์›ํŒ์ด 2๊ฐœ ์ด์ƒ์ด๋ฉด
        hanoi(N-1, start, via, end) # N-1๊ฐœ๋ฅผ ๊ฒฝ์œ ์ง€๋กœ ์˜ฎ๊ธด๋‹ค.
        print(start, "->",end) # N๋ฒˆ์งธ ์›ํŒ์„ ๋„์ฐฉ์ ์œผ๋กœ ์˜ฎ๊ธด๋‹ค.
        hanoi(N-1, via, end, start) # N-1๊ฐœ๋ฅผ ๋„์ฐฉ์ ์œผ๋กœ ์˜ฎ๊ธด๋‹ค.

์œ„ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ฉด ํ•˜๋…ธ์ด์˜ ํƒ‘ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค. ๋ฌธ์ œ๋ฅผ ํฐ ํ‹€์—์„œ ๋ฐ”๋ผ๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

728x90