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.0191 sec