ํด๋น ๊ฒ์๋ฌผ์ johnyejin๋์ [JavaScript] ํ๋ก๊ทธ๋๋จธ์ค ํ๋ ธ์ด์ ํ LEVEL3 ๊ฒ์๋ฌผ์ ๋ณด๊ณ ์ฐธ๊ณ ํ์ฌ ์ ์๋์์์ ๋ฏธ๋ฆฌ ๋ฐํ๋๋ค.
ํ๋ ธ์ด ํ(Tower of Hanoi)์ ํผ์ฆ์ ์ผ์ข ์ ๋๋ค. ์ธ ๊ฐ์ ๊ธฐ๋ฅ๊ณผ ์ด ๊ธฐ๋์ ๊ฝ์ ์ ์๋ ํฌ๊ธฐ๊ฐ ๋ค์ํ ์ํ๋ค์ด ์๊ณ , ํผ์ฆ์ ์์ํ๊ธฐ ์ ์๋ ํ ๊ธฐ๋ฅ์ ์ํ๋ค์ด ์์ ๊ฒ์ด ์์ ์๋๋ก ์์๋๋ก ์์ฌ ์์ต๋๋ค. ๊ฒ์์ ๋ชฉ์ ์ ๋ค์ ๋ ๊ฐ์ง ์กฐ๊ฑด์ ๋ง์กฑ์ํค๋ฉด์, ํ ๊ธฐ๋ฅ์ ๊ฝํ ์ํ๋ค์ ๊ทธ ์์ ๊ทธ๋๋ก ๋ค๋ฅธ ๊ธฐ๋ฅ์ผ๋ก ์ฎ๊ฒจ์ ๋ค์ ์๋ ๊ฒ์ ๋๋ค.
ํ๋ ธ์ด ํ์ ์ธ ๊ฐ์ ๊ธฐ๋ฅ์ ์ผ์ชฝ ๋ถํฐ 1๋ฒ, 2๋ฒ, 3๋ฒ์ด๋ผ๊ณ ํ๊ฒ ์ต๋๋ค. 1๋ฒ์๋ n๊ฐ์ ์ํ์ด ์๊ณ ์ด n๊ฐ์ ์ํ์ 3๋ฒ ์ํ์ผ๋ก ์ต์ ํ์๋ก ์ฎ๊ธฐ๋ ค๊ณ ํฉ๋๋ค.
1๋ฒ ๊ธฐ๋ฅ์ ์๋ ์ํ์ ๊ฐ์ n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, n๊ฐ์ ์ํ์ 3๋ฒ ์ํ์ผ๋ก ์ต์๋ก ์ฎ๊ธฐ๋ ๋ฐฉ๋ฒ์ returnํ๋ solution๋ฅผ ์์ฑํด์ฃผ์ธ์.
n | result |
---|---|
2 | [ [1,2], [1,3], [2,3] ] |
์
์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
๋ค์๊ณผ ๊ฐ์ด ์ฎ๊ธธ ์ ์์ต๋๋ค.
function solution(n) {
const answer = []
function hanoi(depth, from, to, mid) {
// ํ๋์ ์ํ๋ง ์๋ ๊ฒฝ์ฐ ์์์ง์ , ๋์ฐฉ์ง์ ์ผ๋ก ๋ฐฐ์ด์ ๊ฐ์ ๋ฃ๊ณ ์ข
๋ฃ
if(depth === 1) answer.push([from,to])
else {
// ๋ค์ ์ํ์ ์์์ง์ ์์ ์ค๊ฐ ์ง์ ์ผ๋ก
hanoi(depth-1, from, mid, to)
// ์ด๋ ๊ฒฝ๋ก ํ์
answer.push([from, to])
// ์ค๊ฐ ์ง์ ์์ ๋์ฐฉ ์ง์ ์ผ๋ก
hanoi(depth-1, mid, to, from)
}
}
hanoi(n, 1, 3, 2)
return answer
}
ํ๋ ธ์ด ๊ณต์์ ๋ณด๋ฉด์ ๋๋์ ์ ๋ฑํ ์ดํดํ๊ฑฐ๋ ํ ํ์ ์์ด ์งง์ ๊ตฌ๋ฌธ์ ์ธ์ฐ๋๊ฒ ๋ ํธํ ๊ฑฐ ๊ฐ๋ค๊ณ ๋๊ผ์..
๋ณธ์ธ ํ์ด ๋น์์ 3LV ์ด์๋ ๋ฌธ์ ๋ ํ์ด ์๋ฃ ์์ ๊ธฐ์ค 2LV ๊น์ง ๋จ์ด์ก์ต๋๋ค..
๊ทธ๋ผ ๋ฟ -