ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
https://choi95.tistory.com/119?category=854389
๋์ ๊ตํ ๋ฌธ์ ๋ ์ด์ ํฌ์คํ ์์ ๊น์ด ํ์(DFS)์ ํตํด ํผ ๋ฐ๊ฐ ์๋ค.
๊น์ด ํ์์ ํตํด์๋ ํด๋น ๋ฌธ์ ๋ฅผ ํ ์๋ ์์ผ๋ ์ฌ์ฉ๋๋ ๋์ ์ข ๋ฅ์ ๊ฐฏ์๊ฐ ๋ง๊ฑฐ๋ ์ ์๋ ๊ฑฐ์ค๋ฆ๋ ๊ธ์ก์ด ๋ง์ ๊ฒฝ์ฐ์๋ ์๊ฐ ๋ณต์ก๋ ์ ๋นํจ์จ์ ์ผ ์ ์๊ธฐ ๋๋ฌธ์ ๋ ์ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ํด๋น ๋ฌธ์ ๋ฅผ ํ์ดํด ๋ณด๊ณ ์ ํ๋ค.
๋ฌธ์ ํ์ด
์๋ฅผ ๋ค์ด ๋์ 1์๋ง์ ์ฌ์ฉํ์์ ๋ ๊ฑฐ์ฌ๋ฌ ์ค์ผ ๋ ๊ธ์ก์ด 3์์ธ ๊ฒฝ์ฐ ์ฌ์ฉ๋๋ ๋์ ์ ์ต์ ๊ฐฏ์๋ ์ด 3๊ฐ์ด๋ค.
์ดํ ๋์ 2์์ ์ฌ์ฉํ์์ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด์.
ํ์ฌ ์ฐธ์กฐ๋๋ ๋์ 2์์ ๋ฐ๋์ ์ต์ 1๊ฐ๋ฅผ ์ฌ์ฉํด์ผ ๋์ 2์์ด ํฌํจ๋ ์๋ก์ด ์กฐํฉ ๊ฒฝ์ฐ์๋ฅผ ๊ตฌํ ์ ์๋ค.
์ด์ ์ ์ด๋ฏธ์ง ์ ์ ํ์๊ณผ ๊ฐ์ด ํ์ฌ ๊ฑฐ์ค๋ฆ๋์์ ๋์ 2์์ ์ฐ์ ์ ์ผ๋ก ๊ฐ์ฐํ์ ๋์ ๊ฒฝ์ฐ๋ ๊ฑฐ์ค๋ฌ์ค์ผ ๋ ๊ธ์ก์ด 1์์ผ๋ก
์กฐ์ ๋๊ณ 1์์ ๊ฑฐ์ฌ๋ฌ ์ค ์ ์๋ ๋ฐ ์ฐ์ธ ๋์ ์ข ๋ฅ์ ์ต์ ๊ฐฏ์๋ 1๊ฐ(๋์ 1์-1๊ฐ)์ด๋ค.
ํ์ฌ ๋์ ์ข ๋ฅ์ ์ต์ ๊ฐฏ์๋ ๋์ 2์์ ๊ฐ์ฐํ๊ธฐ ๋๋ฌธ์ ์ด์ ๋๋นํ์ฌ 1๊ฐ(๋์ 2์-1๊ฐ)๋งํผ์ ๊ฐ์ฐํ์ฌ ์ค๋ค.
๊ทธ๋ ๊ฒ ๋๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก ๋์ 3์์ ๊ฑฐ์ค๋ฌ ์ค ๋ ์ฐ์ธ ๋์ ์ข ๋ฅ์ ๊ฐฏ์๋ 2๊ฐ(๋์ 1์-1๊ฐ, ๋์ 2์-1๊ฐ)์ด๋ค.
ํด๋น ๋์ ์ข ๋ฅ์ ๊ฐฏ์๊ฐ ์ด์ dy[๊ฑฐ์ค๋ฆ๋]์ ์ฌ์ฉ๋ ๋์ ์ข ๋ฅ์ ๊ฐฏ์๋ณด๋ค ์์ ๊ฒฝ์ฐ์ ํด๋น ๊ฐ์ ์๋กญ๊ฒ ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.
์ฝ๋
function solution(coin, change) {
let answer = 0;
let dy = Array.from({length: change + 1}, () => 1000);
dy[0] = 0;
for(let i = 1; i < coin.length; i++) {
for(let j = coin[i]; j <= change; j++) { //๊ฐ ๋์ ์ ์๊ธฐ ์์ ์ ๊ธ์ก๋ณด๋ค ๋ฐ์ธ ๊ฑฐ์ค๋ฆ๋์ ๋ํด์๋ ๊ฑฐ์ฌ๋ฌ ์ค ์ ์๋ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ์ธ๋ฑ์ค๋ฅผ ์์ ์์ ๊ธ์ก๋ถํฐ ์์ํ๊ฒ๋ ์ด๊ธฐํ
let tmp = dy[j - coin[i]] + 1;
if(dy[j] > tmp) dy[j] = tmp;
}
}
answer = dy[change];
return answer;
}
let arr = [1, 2, 5]
console.log(solution(arr, 15));
function solution(m, coin){
let answer=0;
let dy=Array.from({length:m+1}, ()=>1000);
dy[0]=0;
for(let i=1; i<arr.length; i++){
for(let j=coin[i]; j<=m; j++){
dy[j]=Math.min(dy[j], dy[j-coin[i]]+1);
}
}
answer=dy[m];
return answer;
}
let arr=[1, 2, 5];
console.log(solution(15, arr));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ทธ๋ฆฌ๋]๊ตฌ๋ช ๋ณดํธ (0) | 2021.09.04 |
---|---|
[์ ํด๋ฆฌ๋ ํธ์ ๋ฒ]์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์ (0) | 2021.09.03 |
[LIS]์ต๋ ๋ถ๋ถ ์ฆ๊ฐ ์์ด (0) | 2021.08.16 |
[๋์ ๊ณํ๋ฒ]๊ณ๋จ์ค๋ฅด๊ธฐ (0) | 2021.08.15 |
[DFS/BFS]์ฌ๋๋ผ ์์ผ๋๋ (0) | 2021.08.14 |