๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Algorithm/์ฝ”๋”ฉํ…Œ์ŠคํŠธ

2022.06.27 ใ€ŒLV.2 ํ•˜๋…ธ์ด์˜ ํƒ‘ใ€

by GroovyArea 2022. 6. 27.
์—ฌ๋Š ๋•Œ์™€ ๊ฐ™์ด ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ์žˆ์—ˆ๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณ ๋“์  kit๋ฅผ ์–ด๋Š ์ •๋„ ํ’€์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ํŠน๋ณ„ํ•œ ๊ธฐ์ค€์„ ๋‘๊ณ  ๋ฌธ์ œ๋ฅผ ๊ณ ๋ฅด์ง„ ์•Š๋Š”๋‹ค. ๋ฌธ์ œ๋“ค์„ ๋ณด๋‹ค๊ฐ€ ํ•˜๋…ธ์ด์˜ ํƒ‘์ด๋ผ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ˆˆ์— ๋„์—ˆ๋‹ค. ์›Œ๋‚™์— ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ํ’€์ด๋กœ ์œ ๋ช…ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ํ•œ ๋ฒˆ๋„ ํ’€์–ด๋ณธ ๊ฒฝํ—˜์ด ์—†์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ๋ฒˆ ํ’€์–ด๋ณด๊ธฐ๋กœ ๊ฒฐ์‹ฌํ–ˆ๋‹ค. 
๊ทผ๋ฐ ์ด๊ฒŒ ์›ฌ๊ฑธ. ์ƒ๊ฐ๋ณด๋‹ค ๋‚ด๊ฐ€ ์žฌ๊ท€์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฑธ ๋Š๋ผ๋ฉด์„œ ํ‘ธ๋Š” ์‹œ๊ฐ„๊ณผ ์ดํ•ดํ•˜๋Š” ์‹œ๊ฐ„์ด ๊ฑฐ์˜ 3์ผ์€ ๊ฑธ๋ ธ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. 
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ ๊ฐ™์€ ๋ ˆ๋ฒจ์ด๋ผ๋„ ๋‚œ์ด๋„๋Š” ์ฒœ์ฐจ๋งŒ๋ณ„์ธ๋“ฏํ•˜๋‹ค. ๋‹น์žฅ์— ์นด์นด์˜ค ๊ธฐ์ถœ๋งŒ ๋ณด๋”๋ผ๋„...(๊ธฐ์ค€์ด ๋ญ˜๊นŒ..)
์–ด์ฐŒ ๋๋“  ๊ฒจ์šฐ ์ดํ•ดํ•ด์„œ ๊ทธ ํ’€์ด๊ณผ์ •์„ ๊ธฐ์ˆ ํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค.

https://programmers.co.kr/learn/courses/30/lessons/12946

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํ•˜๋…ธ์ด์˜ ํƒ‘

ํ•˜๋…ธ์ด ํƒ‘(Tower of Hanoi)์€ ํผ์ฆ์˜ ์ผ์ข…์ž…๋‹ˆ๋‹ค. ์„ธ ๊ฐœ์˜ ๊ธฐ๋‘ฅ๊ณผ ์ด ๊ธฐ๋™์— ๊ฝ‚์„ ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ๊ฐ€ ๋‹ค์–‘ํ•œ ์›ํŒ๋“ค์ด ์žˆ๊ณ , ํผ์ฆ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—๋Š” ํ•œ ๊ธฐ๋‘ฅ์— ์›ํŒ๋“ค์ด ์ž‘์€ ๊ฒƒ์ด ์œ„์— ์žˆ๋„๋ก ์ˆœ์„œ๋Œ€

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

 

ํ•˜๋…ธ์ด ํƒ‘(Tower of Hanoi)์€ ํผ์ฆ์˜ ์ผ์ข…์ž…๋‹ˆ๋‹ค. ์„ธ ๊ฐœ์˜ ๊ธฐ๋‘ฅ๊ณผ ์ด ๊ธฐ๋™์— ๊ฝ‚์„ ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ๊ฐ€ ๋‹ค์–‘ํ•œ ์›ํŒ๋“ค์ด ์žˆ๊ณ , ํผ์ฆ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—๋Š” ํ•œ ๊ธฐ๋‘ฅ์— ์›ํŒ๋“ค์ด ์ž‘์€ ๊ฒƒ์ด ์œ„์— ์žˆ๋„๋ก ์ˆœ์„œ๋Œ€๋กœ ์Œ“์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„์˜ ๋ชฉ์ ์€ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๋ฉด์„œ, ํ•œ ๊ธฐ๋‘ฅ์— ๊ฝ‚ํžŒ ์›ํŒ๋“ค์„ ๊ทธ ์ˆœ์„œ ๊ทธ๋Œ€๋กœ ๋‹ค๋ฅธ ๊ธฐ๋‘ฅ์œผ๋กœ ์˜ฎ๊ฒจ์„œ ๋‹ค์‹œ ์Œ“๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

ํ•˜๋…ธ์ด ํƒ‘์˜ ์„ธ ๊ฐœ์˜ ๊ธฐ๋‘ฅ์„ ์™ผ์ชฝ ๋ถ€ํ„ฐ 1๋ฒˆ, 2๋ฒˆ, 3๋ฒˆ์ด๋ผ๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 1๋ฒˆ์—๋Š” n๊ฐœ์˜ ์›ํŒ์ด ์žˆ๊ณ  ์ด n๊ฐœ์˜ ์›ํŒ์„ 3๋ฒˆ ์›ํŒ์œผ๋กœ ์ตœ์†Œ ํšŸ์ˆ˜๋กœ ์˜ฎ๊ธฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

1๋ฒˆ ๊ธฐ๋‘ฅ์— ์žˆ๋Š” ์›ํŒ์˜ ๊ฐœ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, n๊ฐœ์˜ ์›ํŒ์„ 3๋ฒˆ ์›ํŒ์œผ๋กœ ์ตœ์†Œ๋กœ ์˜ฎ๊ธฐ๋Š” ๋ฐฉ๋ฒ•์„ return ํ•˜๋Š” solution๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ ์‚ฌํ•ญ

  • n์€ 15์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ž…๋‹ˆ๋‹ค.

ํ’€์ด ๊ณผ์ •

๋Œ€๋žต ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋‹ค. ์›ํŒ์ด ์ด๋™ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋ผ๋Š” ๋ฌธ์ œ๋‹ค. 

 

๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ํ•œ์ฐธ ์ƒ๊ฐํ–ˆ๋‹ค. ๋ถ„๋ช… ์žฌ๊ท€ ๊ด€๋ จ ๋ฌธ์ œ๋กœ ์œ ๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ˜๋ณต๋˜๋Š” ์ฃผ๊ธฐ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ ๊ทœ์น™์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ด๋‹ค. 

๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ์˜ˆ์‹œ๋Š” n = 2 ์ผ ๋•Œ์˜ ์˜ˆ์‹œ์ด๋‹ค. ๊ทธ๋Ÿผ n = 3 ์ผ ๋•Œ๋„ ์ƒ๊ฐํ•ด๋ณด์ž. 

 

์ฐธ์กฐ : https://small-stap.tistory.com/73

 

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ•˜๋…ธ์ด์˜ ํƒ‘ Java ํ’€์ด

์ด ๊ธ€์€ ํ˜ผ์ž ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ‹€๋ฆฌ๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์ •๋ณด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ์ˆ˜์ •ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ๋ฌธ์ œ ํ•˜๋…ธ์ด ํƒ‘(Tower of Hanoi)์€ ํผ์ฆ์˜ ์ผ์ข…์ž…๋‹ˆ

small-stap.tistory.com

๊ทธ๋ฆผ์€ ๋‹ค๋ฅธ ํฌ์ŠคํŒ…์—์„œ ์ž ์‹œ ๊ฐ€์ ธ์™”๋‹ค.

 

์›ํŒ์ด 2๊ฐœ

์›ํŒ์ด ๋‘๊ฐœ์ผ ๋•Œ ์ฒซ ๋ฒˆ์งธ ์›ํŒ์€ ๊ธฐ๋‘ฅ 2๋กœ ๊ฐ„ ๋’ค ๋‘ ๋ฒˆ์งธ ์›ํŒ์€ ๊ธฐ๋‘ฅ 3์œผ๋กœ ๊ฐ„๋‹ค. ๊ทธ ํ›„ ๊ธฐ๋‘ฅ 2์˜ ์ฒซ ์›ํŒ์„ ๊ธฐ๋‘ฅ 3์œผ๋กœ ๋ณด๋‚ธ๋‹ค. 1 -> 2 / 1 -> 3 / 2 -> 3 

 

์›ํŒ์ด 3๊ฐœ

์›ํŒ์ด ์„ธ๊ฐœ์ผ ๋•Œ ์›ํŒ 1 -> ๊ธฐ๋‘ฅ 3, ์›ํŒ 2 -> ๊ธฐ๋‘ฅ 2, ์›ํŒ 1 -> ๊ธฐ๋‘ฅ 2, ์›ํŒ 3 -> ๊ธฐ๋‘ฅ 3, ์›ํŒ 1 -> ๊ธฐ๋‘ฅ 1, ์›ํŒ 2 -> ๊ธฐ๋‘ฅ 3, ์›ํŒ 1 -> ๊ธฐ๋‘ฅ 3์˜ ๊ณผ์ •์ด๋‹ค.

1 -> 3 / 1 -> 2 / 3 -> 2 / 1 -> 3 / 2 -> 1 / 2 -> 3 / 1 -> 3 ์˜ 

 

์ค‘์š”ํ•œ ๊ทœ์น™์€ ๋งˆ์ง€๋ง‰ ์›ํŒ ์ „ ๋ชจ๋“  ์›ํŒ๋“ค์€ ๊ฒฝ์œ ์ง€๋ฅผ ๊ฑฐ์ณ ์ค‘๊ฐ„ ์ง€์—ญ์— ๋ชจ๋‘ ๋จธ๋ฌด๋ฅด๊ฒŒ ๋˜๊ณ , ๋งˆ์ง€๋ง‰ ์›ํŒ์€ ๊ฒฝ์œ ์ง€๋กœ ๋ฐ”๋กœ ๊ฐ„๋‹ค.

 

 ์ด๊ฑธ n๊ฐœ์˜ ์›ํŒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด n-1๊ฐœ์˜ ์›ํŒ๋“ค์€ ๊ฐ์ž์˜ ๊ฒฝ์œ ์ง€๋“ค์„ ๊ฑฐ์ณ ์ค‘๊ฐ„ ์ง€์—ญ์œผ๋กœ ์˜ฎ๊ธฐ๊ณ  ๋งˆ์ง€๋ง‰ ์›ํŒ์€ ๋„์ฐฉ์ง€๋กœ ์˜ฎ๊ธด ๋’ค, ๋‚˜๋จธ์ง€ ์›ํŒ๋“ค์„ ๊ฐ์ž์˜ ๊ฒฝ์œ ์ง€๋ฅผ ๊ฑฐ์ณ ๋„์ฐฉ์ง€๋กœ ์ด๋™์‹œํ‚ค๋ฉด ๋œ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

์ด๊ฒƒ์„ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ์žฌ๊ท€๋ฅผ ์–ด๋–ค์‹์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?

 

์ด ๋ถ€๋ถ„์€ ๋„๋ฌด์ง€ ๋– ์˜ค๋ฅด์ง€ ์•Š์•„ ์—ฌ๋Ÿฌ ํ’€์ด๋“ค์„ ๋ณด๊ณ  ๋‚˜๋งŒ์˜ ํ’€์ด๋ฅผ ์ •๋ฆฝํ–ˆ๋‹ค. 

์›ํŒ๋“ค์ด ๊ธฐ๋‘ฅ์„ ์˜ฎ๊ฒจ๊ฐ€๋Š” ๋™์ž‘์„ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ƒˆ๋กœ ์ •์˜ํ–ˆ๋‹ค. 

 

์›ํŒ์˜ ๊ฐœ์ˆ˜๊ฐ€ 1์ผ ๊ฒฝ์šฐ ๋ฐ”๋กœ 1 -> 3์œผ๋กœ ๊ฐ€๋Š” ๋ฐฐ์—ด์— ๊ฐ’์„ ์ง‘์–ด๋„ฃ๊ณ  ๋ฆฌํ„ดํ•œ๋‹ค. 

์•„๋‹ ๊ฒฝ์šฐ 3๊ฐ€์ง€ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค.

 

์ฒซ์งธ, n-1 ๊ฐœ์˜ ์›ํŒ์„ ๊ฒฝ์œ  ์ง€์—ญ์œผ๋กœ ์ด๋™์‹œํ‚ฌ ๊ฒƒ. 

์ด ๊ฒฝ์šฐ๋Š” ์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ๊ฒฝ์œ ์ง€๋Š” ๋งˆ์ง€๋ง‰ ๊ธฐ๋‘ฅ์œผ๋กœ ๋‘๊ณ  ์‹คํ–‰ํ•œ๋‹ค.

 

๋‘˜์งธ, ๊ฐ€์žฅ ํฐ ๋งˆ์ง€๋ง‰ ์›ํŒ์„ ๋งˆ์ง€๋ง‰ ๊ธฐ๋‘ฅ์œผ๋กœ ์ด๋™์‹œํ‚จ๋‹ค. 

์ด ๊ฒฝ์šฐ๋Š” ๋ฐฐ์—ด์— ๊ฐ’์„ ์ง์ ‘์ ์œผ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค. 

 

์…‹์งธ, ๊ฒฝ์œ ์ง€์— ์žˆ๋Š” n-1๊ฐœ์˜ ์›ํŒ์„ ๋งˆ์ง€๋ง‰ ๊ธฐ๋‘ฅ์œผ๋กœ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ์žฌ๊ท€ ํ˜ธ์ถœํ•œ๋‹ค.

์ด ๊ฒฝ์šฐ๋Š” ์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ๊ฒฝ์œ ์ง€๋Š” ์ค‘๊ฐ„ ์ง€์—ญ์œผ๋กœ ๋‘๊ณ  ์‹คํ–‰ํ•œ๋‹ค.

 

DFS๋ฅผ ์ด์šฉํ•œ ํ’€์ด

 

์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด

 

 

์ด ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์žฌ๊ท€ ํ˜ธ์ถœ์— ๋Œ€ํ•ด ๊ฐœ๋…์„ ์ž˜๋ชป ์žก๊ณ  ์žˆ์—ˆ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ์žฌ๊ท€ ํ˜ธ์ถœ์ด ์ผ์–ด๋‚˜๋ฉด ์ž๊ธฐ ์ž์‹ ์„ ๋ฐ”๋กœ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๋งž์ง€๋งŒ ๊ทธ๋งŒํผ ๋ฉ”์„œ๋“œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•˜๋‚˜ ๋” ์ƒ์„ฑ๋˜์–ด ํŒŒ๊ณ ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค ๋ณด๋‹ˆ ๋‹น์—ฐํžˆ ์ดํ•ด๊ฐ€ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ ๊ฒƒ์ด๋‹ค. ์žฌ๊ท€์˜ ๊ฐœ๋…์„ ํ™•์‹คํžˆ ์ดํ•ดํ•˜๊ณ  3์ผ ๋‚ด๋‚ด ์ณ๋‹ค๋ณด๋‹ˆ ๊ฒจ์šฐ ์ดํ•ด๊ฐ€ ๋˜์—ˆ๋‹ค. ์ƒ๊ฐ์ง€๋„ ๋ชปํ•œ ๋ฌธ์ œ์˜€๊ณ , ๊ฐœ๋…์„ ์ข€ ๋” ์ž˜ ๋‹ค์ ธ๊ฐ€์•ผ๊ฒ ๋‹จ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

๋ฐ˜์‘ํ˜•