E D R , A S I H C RSS

Hanoi Problem

ํ•˜๋…ธ์ด ๋ฌธ์ œ

  • ํ•˜๋…ธ์ดํƒ‘ ๋ฌธ์ œ ๋ชจ๋‘๋“ค ์•„์‹œ์ฃ ?
  • ๋ง 3๊ฐœ๊ฐ€ ์žˆ์œผ๋ฉด 1๋ฒˆ ๋ง์—์„œ 3๋ฒˆ ๋ง๊นŒ์ง€ ๋ง๋“ค์„ ์ด๋™ ์‹œํ‚ค๋Š” ๊ฒƒ์ด์ฃ .
  • ๊ทธ๋•Œ ๋ง ํฌ๊ธฐ๋Š” ๊ฐ์ž ๋‹ค๋ฅด๊ณ , ์ฒ˜์Œ์— ๋ง์€ ์ œ์ผ ๋ฐ‘์— ์ œ์ผ ํฐ ๋ง, ๊ทธ ์œ„์— ๋‹ค์Œ์œผ๋กœ ํฐ๋ง, ์ด๋Ÿฐ์‹์œผ๋กœ ์žˆ๊ณ , ์•ž์œผ๋กœ๋„ ๊ณ„์† ๊ทธ๋Ÿฐ์‹์œผ๋กœ ๋ฐ–์— ์Œ“์ผ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ์ง€์‹

  • C++ ๊ธฐ์ดˆ ์ง€์‹
  • Recursive Function

๋ฌธ์ œ ์†Œ์Šค๋“ค

  • ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ˆ์ œ ์‹์œผ๋กœ ์†Œ์Šค๋ฅผ ๋งŒ๋“  ํŽ˜์ด์ง€์— ๋„ฃ์–ด ์ฃผ์„ธ์š”.
๋„์ „์ž์ด๊ฐœ๋ฐœ์‹œ๊ฐ„์†Œ์Šค๋ผ์ธ์ˆ˜(์ฃผ์„์ œ์™ธ)์‚ฌ์šฉ์–ธ์–ด Source
๋‚จ์ƒํ˜‘x์‹œ๊ฐ„x๋ถ„ 30๋ผ์ธ C++HanoiProblem/์ƒํ˜‘
์žฅ์€์ง€ . . C++HanoiProblem/์€์ง€
์‹ ์žฌ๋™ . 20๋ผ์ธ C++HanoiProblem/์žฌ๋™
์ž„์˜๋™์ดํ‹€ ๊ฑธ๋ฆผ 100๋ผ์ธ ์ดˆ๊ณผ ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ดHanoiProblem/์˜๋™
์ž„์ธํƒ1์‹œ๊ฐ„ 100๋ผ์ธJavaHanoiProblem/์ž„์ธํƒ


ํ•™์ƒ๋“ค์ด HanoiProblem์„ ํ‘ธ๋Š” ๊ฒƒ์ด ์–ด๋ ค์› ๋‹ค๋ฉด ์ด๊ฒŒ ์‰ฌ์šด ๋ฌธ์ œ๋ผ๊ณ (ํ˜น์€ ๊ทธ๋‹ค์ง€ ์–ด๋ ค์šด ๋ฌธ์ œ๋Š” ์•„๋‹ˆ๋ผ๊ณ ) ํ•™์ƒ๋“ค์ด ๋А๋‚„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ์„๊นŒ ์ƒ๊ฐํ•ด ๋ณด๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ํ•™์ƒ๋“ค์ด HanoiProblem์— ๋„์ „ํ•˜๊ธฐ ์ด์ „์— ๋‹ค์Œ ์„ธ๊ฐ€์ง€๋ฅผ ์ด์•ผ๊ธฐ ํ•ด์ฃผ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
  • ์žฌ๊ท€ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ดํ•ด
  • ๋‹จ์ˆœํ™”
  • ๋ฏธ๋กœ๊ฑฐ์Šฌ๋Ÿฌ๋‚ด๋ ค์˜ค๊ธฐ

์žฌ๊ท€ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ดํ•ด

์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์˜ˆ ๋ช‡๊ฐ€์ง€๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์žฌ๊ท€ํ•จ์ˆ˜ ์‚ฌ์šฉ์—๋„ ๊ทธ ์ข…๋ฅ˜๊ฐ€ ๋‹ค๋ฅธ๋ฐ, ๋Œ€ํ‘œ์ ์ธ ์ข…๋ฅ˜๋“ค์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. "์•„, ์žฌ๊ท€ํ•จ์ˆ˜๋ผ๋Š” ๊ฒƒ์ด ์ด๋ ‡๊ฒŒ๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ตฌ๋‚˜!" ํผ๋ฎคํ…Œ์ด์…˜/์ฝค๋น„๋„ค์ด์…˜, ํ”ผ๋ณด๋‚˜์น˜์ˆ˜์—ด, ํŠธ๋ฆฌ๊ฒ€์ƒ‰, ํŒฉํ† ๋ฆฌ์•Œ, ์กฐ๊ฑด๋ฌธ๊ณผ ์žฌ๊ท€ํ˜ธ์ถœ๋กœ ๋ฐ˜๋ณต๋ฌธ(while) ๋งŒ๋“ค๊ธฐ ๋“ฑ์ด๋ฉด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์„๊นŒ ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ HanoiProblem์„ ํ’€๊ฒŒ ํ•˜๊ธฐ ์ด์ „์— ํŒฉํ† ๋ฆฌ์•Œ๊ณผ ๋น„์Šทํ•œ ํ˜•์˜ ๋ฌธ์ œ๋งŒ ๋ณด์—ฌ์คฌ๋‹ค๋ฉด, ์˜คํžˆ๋ ค HanoiProblem์„ ์–ด๋ ต๊ฒŒ ๋А๋ผ๊ณ  ํ•™์Šต์ด ๋งŽ์ด ๋ฐœ์ƒํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ์ด ๋” ๋‹น์—ฐํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค.

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

๋‹จ์ˆœํ™”

ํ˜ธ์ฃผ์˜ ์‹ฌ๋ฆฌํ•™์ž ์กด ์Šค์›ฐ๋Ÿฌ(John Sweller) ๊ต์ˆ˜๋Š” ์ˆœ์„œํšจ๊ณผ(sequence effect)๋ผ ๋ถ€๋ฅด๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ˆœ์„œํšจ๊ณผ๋Š” ๋ณต์žกํ•œ ๊ฒƒ๊ณผ ์‰ฌ์šด ๊ฒƒ์ด ์žˆ์„ ๋•Œ ์–ด๋А ๊ฒƒ์„ ๋จผ์ € ์ œ์‹œ๋ฐ›๋А๋ƒ์— ๋”ฐ๋ผ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์— ํฐ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋Š” ์ˆ˜๋ฅผ ํ•˜๋‚˜ ์ฃผ๊ณ , ํŠน์ •ํ•œ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •ํ•ด์ง„ ์Šคํ…๋งŒ์— ๋‹ค๋ฅธ ์ˆ˜๋กœ ์ „ํ™˜์‹œํ‚ค๋Š” ๋ฌธ์ œ๋ฅผ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 8์—์„œ ์‹œ์ž‘ํ•ด์„œ ๊ณฑํ•˜๊ธฐ 2๋‚˜, ๋นผ๊ธฐ 7์„ ์‚ฌ์šฉํ•ด์„œ 6๋ฒˆ์˜ ์Šคํ…๋งŒ์— 15๋ฅผ ๋งŒ๋“œ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

ํ•œ ๊ทธ๋ฃน์€ ์˜ˆ๋ฅผ ๋“ค์€ ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ๋จผ์ € ์ œ์‹œ๋ฐ›์•˜๊ณ , ๋‹ค๋ฅธ ๊ทธ๋ฃน์€ ๋‹จ์ˆœํ•œ ๋ฌธ์ œ(์˜ˆ์ปจ๋Œ€ 2๋ฒˆ๋งŒ์— 8์„ 9๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ) ๋‘๊ฐœ๋ฅผ ๋จผ์ € ์ œ์‹œ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

์ฒซ๋ฒˆ์งธ ๊ทธ๋ฃน์€ ํ•œ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ ํ‰๊ท  406์ดˆ ์ด์ƒ ๊ฑธ๋ ธ์ง€๋งŒ, ๋‘๋ฒˆ์งธ ๊ทธ๋ฃน์€ ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ 97์ดˆ ๊ฑธ๋ ธ๊ณ , ์„ธ ๋ฌธ์ œ๋ฅผ ๋ชจ๋‘ ํ‘ธ๋Š”๋ฐ 192์ดˆ ๋ฐ–์— ๊ฑธ๋ฆฌ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ HanoiProblem์— ์ ์šฉํ•˜๋ฉด, 3๊ฐœ(ํ˜น์€ 5๊ฐœ, 6๊ฐœ)์˜ ์›๋ฐ˜ ๋ฌธ์ œ๊ฐ€ ๋ณต์žกํ•˜๋‹ค๋ฉด, ํ•˜๋‚˜, ๋‘˜ ๋“ฑ์˜ ์ข€ ๋” ๋‹จ์ˆœํ•œ ๋ฌธ์ œ๋ฅผ ๋จผ์ € ํ’€๊ณ  ๊ฑฐ๊ธฐ์„œ ๋ฌธ์ œํ’€์ด์˜ "๊ตฌ์กฐ์  ์œ ์‚ฌ์„ฑ"์„ ๋ฐœ๊ฒฌํ•ด ๋‚ธ ๋’ค์— ์ข€ ๋” ์–ด๋ ต๊ฑฐ๋‚˜ ์ข€ ๋” ์ผ๋ฐ˜์ ์ธ (์ฆ‰ ์›๋ฐ˜ n๊ฐœ) ๋ฌธ์ œ์— ๋„์ „ํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ด๋ผ๋Š” ๋ง์ด ๋ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋Œ€๋กœ ๋ฌธ์ œ๊ฐ€ ๋„ˆ๋ฌด ๋‹จ์ˆœํ•ด์„œ ๋ณต์žกํ•  ๊ฒฝ์šฐ์—๋Š” ์˜คํžˆ๋ ค 100๊ฐœ, 200๊ฐœ ๋“ฑ์˜ ๋ณต์žก/์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฏธ๋กœ๊ฑฐ์Šฌ๋Ÿฌ๋‚ด๋ ค์˜ค๊ธฐ

์ข…์ข… ๋ฏธ๋กœ๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•  ๋•Œ ๋ชฉ์ ์ง€์—์„œ ๊ฑฐ๊พธ๋กœ ๋‚ด๋ ค์˜ค๋Š” ๊ฒƒ์ด ๋” ๊ฐ„๋‹จํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. TestDrivenDevelopment๋„ ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์‹ ์ด ์›ํ•˜๋Š” ๊ฒƒ์„ ์ปดํ“จํ„ฐ์—๊ฒŒ ์„ค๋ช…ํ•ด ์ฃผ๊ณ , ๊ทธ ๋ชฉ์ ์ง€์—์„œ ๊ฑฐ์Šฌ๋Ÿฌ ๋‚ด๋ ค์˜ต๋‹ˆ๋‹ค.

HanoiProblem์ด ๋ณต์žกํ•˜๊ฒŒ ๋А๊ปด์ง„๋‹ค๋ฉด, ์šฐ์„  ๋ชฉ์ ์ง€์— ๋„๋‹ฌํ•œ ์ƒํƒœ, ์ฆ‰, ๋ชจ๋“  ์›๋ฐ˜์ด ๋‹ค๋ฅธ ๋ง‰๋Œ€๊ธฐ๋กœ ์˜ฎ๊ฒจ๊ฐ€ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ์ƒ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์—๋Š” ์—ฌ๊ธฐ์—์„œ ๋ฐ”๋กœ ์ง์ „์˜ ์ƒํƒœ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ๋‚ด๋ ค์˜ต๋‹ˆ๋‹ค.

ํ˜น์€, ์ค‘๊ฐ„์„ ๋Š์–ด์„œ ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์ฐŒ๋˜์—ˆ๊ฑด ๋ชจ๋“  ์›๋ฐ˜์ด ์˜ฎ๊ฒจ๊ฐ€๋ ค๋ฉด ์–ด๋А ์ˆœ๊ฐ„์—”๊ฐ€๋Š” ๊ฐ€์žฅ ํฐ ์›๋ฐ˜์ด ๋น„์–ด์žˆ๋Š” ๋ง‰๋Œ€๊ธฐ๋กœ ์ด๋™ํ•ด ๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ํฐ ์›๋ฐ˜์ด ์žˆ๋Š” ๋ง‰๋Œ€๊ธฐ์—๋Š” ํฐ ์›๋ฐ˜ ํ•˜๋‚˜๋งŒ ์žˆ์„ ๊ฒƒ์ด๊ณ , ๊ทธ ์›๋ฐ˜์ด ์˜ฎ๊ฒจ๊ฐˆ ๋ง‰๋Œ€๊ธฐ๋Š” ๋น„์–ด์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ, ๊ฒฐ๊ตญ ๋‘๊ฐœ์˜ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ๋ชจ๋‘ ์‚ฌ์šฉ๋˜๊ณ , ๋‚˜๋จธ์ง€ ํ•˜๋‚˜์˜ ๋ง‰๋Œ€๊ธฐ์—๋Š” ๋‚˜๋จธ์ง€ ์›๋ฐ˜๋“ค์ด ๋ชจ๋‘ ํฌ๊ธฐ ์ˆœ์œผ๋กœ ์Œ“์—ฌ์žˆ๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๋Š” ์ถ”์ธก์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์•ž ๋’ค ์ƒํ™ฉ์„ ์ƒ๊ฐํ•ด ๋ณด๋ฉด ์–ด๋–ค ํ†ต์ฐฐ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

--JuNe



Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:21
Processing time 0.0067 sec