ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
๋ค์๊ณผ ๊ฐ์ด ์ฌ๋ฌ ๋จ์์ ๋์ ๋ค์ด ์ฃผ์ด์ ธ ์์๋ ๊ฑฐ์ค๋ฆ๋์ ๊ฐ์ฅ ์ ์ ์์ ๋์ ์ผ๋ก ๊ตํํด์ฃผ๋ ค๋ฉด ์ด๋ป๊ฒ ์ฃผ๋ฉด ๋๋๊ฐ?๊ฐ ๋จ์์ ๋์ ์ ๋ฌดํ์ ์ธ ์ ์๋ค.
๋ฌธ์ ํ์ด
์ฝ๋
function solution(arr, m) {
let answer = Number.MAX_SAFE_INTEGER;
let n = arr.length;
function DFS(L, sum) {
if(sum > m) return; //๊ฑฐ์ค๋ฆ๋ ๊ธ์ก์ ํฉ์ฐ ๊ธ์ก์ด ๋์ด์ฐ์ ๊ฒฝ์ฐ
if(sum === m) {
answer = Math.min(answer, L);
}
else {
for(let i = 0; i < n; i++) {
DFS(L + 1, sum + arr[i]);
}
}
}
DFS(0, 0);
return answer;
}
const arr = [1, 2, 5];
console.log(solution(arr, 15));
DFS-Cut Edge
์ ์ฝ๋๋ง์ผ๋ก๋ ๋์ ์ ๊ฐ์ฅ ์ ์ ์๋ฅผ ๊ตฌํ ์ ์์ง๋ง ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ์๋ค.๊ฑฐ์ค๋ฆ๋์ด ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฝ์ ์ฐฝ์์ ํ์ธํ ๊ฒฐ๊ณผ,
function solution(arr, m) {
let answer = Number.MAX_SAFE_INTEGER;
let n = arr.length;
function DFS(L, sum) {
if(answer <= L) return; //Cut Edge
if(sum > m) return;
if(sum === m) {
answer = Math.min(answer, L);
}
else {
for(let i = 0; i < n; i++) {
DFS(L + 1, sum + arr[i]);
}
}
}
DFS(0, 0);
return answer;
}
const arr = [1, 2, 5];
console.log(solution(arr, 15));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฉ๋ชจ์ด์ ์ด์ ]์กฐํฉ์ ๊ฒฝ์ฐ์ (0) | 2021.08.07 |
---|---|
์์ด ๊ตฌํ๊ธฐ (0) | 2021.08.07 |
[๋ค์ค for๋ฌธ๊ณผ ์ฌ๊ท์ ์ฐจ์ด]์ค๋ณต์์ด ๊ตฌํ๊ธฐ (0) | 2021.08.06 |
[DFS]์ต๋ ์ ์ ๊ตฌํ๊ธฐ (0) | 2021.08.04 |
[DFS]ํฉ์ด ๊ฐ์ ๋ถ๋ถ์งํฉ (0) | 2021.07.30 |