ํ๋ ธ์ด ๋ฌธ์ ¶
- ํ๋
ธ์ดํ ๋ฌธ์ ๋ชจ๋๋ค ์์์ฃ ?
- ๋ง 3๊ฐ๊ฐ ์์ผ๋ฉด 1๋ฒ ๋ง์์ 3๋ฒ ๋ง๊น์ง ๋ง๋ค์ ์ด๋ ์ํค๋ ๊ฒ์ด์ฃ .
- ๊ทธ๋ ๋ง ํฌ๊ธฐ๋ ๊ฐ์ ๋ค๋ฅด๊ณ , ์ฒ์์ ๋ง์ ์ ์ผ ๋ฐ์ ์ ์ผ ํฐ ๋ง, ๊ทธ ์์ ๋ค์์ผ๋ก ํฐ๋ง, ์ด๋ฐ์์ผ๋ก ์๊ณ , ์์ผ๋ก๋ ๊ณ์ ๊ทธ๋ฐ์์ผ๋ก ๋ฐ์ ์์ผ์ ๋ฐ์ ์์ต๋๋ค.
ํ์ํ ์ง์ ¶
- C++ ๊ธฐ์ด ์ง์
- Recursive Function
๋ฌธ์ ์์ค๋ค ¶
- ์๋์ ๊ฐ์ ์์ ์์ผ๋ก ์์ค๋ฅผ ๋ง๋ ํ์ด์ง์ ๋ฃ์ด ์ฃผ์ธ์.
๋์ ์ | ์ด๊ฐ๋ฐ์๊ฐ | ์์ค๋ผ์ธ์(์ฃผ์์ ์ธ) | ์ฌ์ฉ์ธ์ด | Source |
๋จ์ํ | x์๊ฐx๋ถ | 30๋ผ์ธ | C++ | HanoiProblem/์ํ |
์ฅ์์ง | . | . | C++ | HanoiProblem/์์ง |
์ ์ฌ๋ | . | 20๋ผ์ธ | C++ | HanoiProblem/์ฌ๋ |
์์๋ | ์ดํ ๊ฑธ๋ฆผ | 100๋ผ์ธ ์ด๊ณผ | ์ด์ ๋ธ๋ฆฌ ์ธ์ด | HanoiProblem/์๋ |
์์ธํ | 1์๊ฐ | 100๋ผ์ธ | Java | HanoiProblem/์์ธํ |
ํ์๋ค์ด 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