์ธ๋ค์ผ์ ์กธ์ ์ ๋ฌผ๋ก ๋ฐ์ ๋ชฉ๊ฑธ์ด๐ ๋๋์ด ์กธ์ ํ๋ค~
ํผ๋ณด๋์น ์๋ F(0) = 0, F(1) = 1์ผ ๋, 1 ์ด์์ n์ ๋ํ์ฌ F(n) = F(n-1) + F(n-2) ๊ฐ ์ ์ฉ๋๋ ์ ์ ๋๋ค.
์๋ฅผ๋ค์ด
F(2) = F(0) + F(1) = 0 + 1 = 1
F(3) = F(1) + F(2) = 1 + 1 = 2
F(4) = F(2) + F(3) = 1 + 2 = 3
F(5) = F(3) + F(4) = 2 + 3 = 5
์ ๊ฐ์ด ์ด์ด์ง๋๋ค.
2 ์ด์์ n์ด ์ ๋ ฅ๋์์ ๋, n๋ฒ์งธ ํผ๋ณด๋์น ์๋ฅผ 1234567์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํด ์ฃผ์ธ์.
์ ํ ์ฌํญ
function solution(n) {
/*
//์ฌ๊ท ํจ์ ์ฌ์ฉ (์๊ฐ ์ด๊ณผ)
const recurse = (num) => {
if(num === 0){
return 0
}
if(num === 1){
return 1
}
return recurse(num-1) + recurse(num-2)
}
return recurse(n)
*/
// DP ์ฌ์ฉ ํ์ด
let first = 0, second = 1, target = 0;
for(let i = 2; i <= n; i++){
target = (first + second) % 1234567;
first = second;
second = target;
}
return target;
}
์ฒ์์๋ ์๊ฐ ๋ณต์ก๋๋ฅผ ์๊ฐ ๋ชปํ๊ณ ์ฌ๊ท๋ก ํ์ด๋ดค๋๋ฐ, ์๊ฐ ์ด๊ณผ๊ฐ ๋ด๋ค...! ๊ทธ๋์ DP๋ก ๋ค์ ํ์๋ค.
for
๋ฌธ์ 2
๋ถํฐ n
๊น์ง ๋๋ค.
0
๊ณผ 1
์ ์๋๋ ์ด์ : i=2
์ผ๋ target = (first + second)
์์ ์ด๋ฏธ F(2) = F(0) + F(1)
์ด ๋๊ธฐ ๋๋ฌธ์! target
์ F(n)
first
๋ F(n-1)
second
๋ F(n-2)
๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
first = second
์ second = target
์ผ๋ก n
๋ฅผ ํ๋์ฉ ์ฌ๋ ค ์ค๋ค.
DP๋ก ํธ๋๊น ๋ก์ง์ ์ฌ๊ท๋ ๋น์ทํ๋ฐ ์๊ฐ ๋ณต์ก๋๊ฐ ๋ ์ค์ด๋ค์ด์ ์ ๊ธฐํ๋ค. ๋ค์๋ถํฐ๋ ๋ฌธ์ ํ๊ธฐ ์ ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ์ข ๋ ๊ผผ๊ผผํ ์๊ฐํ๊ณ ํ์!