ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
์ฒ ์๋ ๊ณ๋จ์ ์ค๋ฅผ ๋ ํ ๋ฒ์ ํ ๊ณ๋จ ๋๋ ๋ ๊ณ๋จ์ฉ ์ฌ๋ผ๊ฐ๋ค. ๋ง์ฝ ์ด 4๊ณ๋จ์ ์ค๋ฅธ๋ค๋ฉด ๊ทธ ๋ฐฉ๋ฒ์ ์๋ (1 + 1 + 1 + 1, 1 + 1 + 2, 1 + 2 + 1, 2 + 1 + 1, 2 + 2) ๋ก 5๊ฐ์ง์ด๋ค.๊ทธ๋ ๋ค๋ฉด N๊ณ๋จ์ผ ๋ ์ฒ ์๊ฐ ์ฌ๋ผ๊ฐ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ ๋ช๊ฐ์ง์ธ๊ฐ?
์ฝ๋
function solution(n) {
let answer = 0;
function DFS(sum) {
if(sum > n) return; //cut-edge
if(sum === n) {
answer++;
return;
}
else {
DFS(sum + 1);
DFS(sum + 2);
}
}
DFS(0);
return answer;
}
console.log(solution(7));
์ค๋ต
ํด๋น ๋ฌธ์ ๋ ๊น์ด ํ์์ผ๋ก ํธ๋ ๊ฒ์ด ์๋ ๋์ ๊ณํ๋ฒ์ ์ฌ์ฉํด์ ํธ๋ ๊ฒ์ด์๋ค.
๋์ ๊ณํ๋ฒ(Dynamic Programming)
- ์ ์ฒด ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋จ์ํํ ๋ค์ ์ ํ์์ผ๋ก ๋ง๋ค์ด ์ฌ๊ท์ ์ธ ๊ตฌ์กฐ๋ฅผ ํ์ฉํ์ฌ ์ ์ฒด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์
- ์ ์ฒด ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋จ์ํ => ๋ถ๋ถ ๋ฌธ์ ๋ฅผ ์ ์
- ์ฌ๊ท์ ์ธ ๊ตฌ์กฐ๋ฅผ ํ์ฉํ ์ ์๋ ์ ํ์์ ๋ง๋ฌ => ๋ถ๋ถ ๋ฌธ์ ์์ ๋ถ์๋ ๋ด์ฉ ํ ๋๋ก ์ ํ์ ๋์ถ
- ๋ฉ๋ชจ์ด์ ์ด์ (Memoization)์ ๋์ ๊ณํ๋ฒ์์ ๋ฐ๋์ ํ์ํจ
์ฝ๋
function solution(n) {
let answer = 0;
let dy = Array.from({length: n + 1}, () => 0);
dy[1] = 1; //๋จ์ํ(๋ถ๋ถ๋ฌธ์ ์ ์)
dy[2] = 2;
for(let i = 3; i <= n; i++) {
dy[i] = dy[i - 2] + dy[i - 1]; //์ ํ์
}
answer = dy[n];
return answer;
}
console.log(solution(7));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ ์ ์๊ณ ๋ฆฌ์ฆ]๋์ ๊ตํ (0) | 2021.08.17 |
---|---|
[LIS]์ต๋ ๋ถ๋ถ ์ฆ๊ฐ ์์ด (0) | 2021.08.16 |
[DFS/BFS]์ฌ๋๋ผ ์์ผ๋๋ (0) | 2021.08.14 |
[BFS: ์ํํธ๋ฆฌํ์]์ก์์ง ์ฐพ๊ธฐ (0) | 2021.08.13 |
[BFS]์ด์งํธ๋ฆฌ ๋์ด ์ฐ์ ํ์ (0) | 2021.08.13 |
๋๊ธ