ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
๋ค์๊ณผ ๊ฐ์ด ์ฌ๋ฌ ๋จ์์ ๋์ ๋ค์ด ์ฃผ์ด์ ธ ์์๋ ๊ฑฐ์ค๋ฆ๋์ ๊ฐ์ฅ ์ ์ ์์ ๋์ ์ผ๋ก ๊ตํํด์ฃผ๋ ค๋ฉด ์ด๋ป๊ฒ ์ฃผ๋ฉด ๋๋๊ฐ?๊ฐ ๋จ์์ ๋์ ์ ๋ฌดํ์ ์ธ ์ ์๋ค.
๋ฌธ์ ํ์ด
์ฝ๋
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
์ ์ฝ๋๋ง์ผ๋ก๋ ๋์ ์ ๊ฐ์ฅ ์ ์ ์๋ฅผ ๊ตฌํ ์ ์์ง๋ง ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ์๋ค.๊ฑฐ์ค๋ฆ๋์ด ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฝ์ ์ฐฝ์์ ํ์ธํ ๊ฒฐ๊ณผ, ๋์ ์ข ๋ฅ์ ๊ฐฏ์๊ฐ 5๊ฐ์ผ ๊ฒฝ์ฐ ์ด๋ณด๋ค ๋ ๋ง์ ๋์ ์ข ๋ฅ๋ฅผ ์ฌ์ฉํด์ ๊ฑฐ์ค๋ฆ๋๊ณผ ๊ฐ์ ๊ธ์ก์ ์ฐ์ถํ๋ ์์ ์ ํ์ฌ ๊ฐ์ฅ ์ ์ ์์ ๋์ ์ผ๋ก ๊ตํํด์ผ ํ๋ ์ด ๋ฌธ์ ์์ ๋ถํ์ํ๋ค.์ด๋ฌํ ๋ถํ์ํ ์์ ์ ์๋ตํ๊ธฐ ์ํด์๋ ํ์ฌ๊น์ง ๋์ ์ข ๋ฅ์ ๊ฐฏ์๋ฅผ ์ ์ฅํ๊ณ ์๋ ๋ณ์๋ณด๋ค ํ์ฌ ๋ ๋ฒจ ๊ฐ(์๋กญ๊ฒ ๊ตฌํ๋ ๊ฒฝ์ฐ์ ์)์ด ํฌ๊ฑฐ๋ ์์ ๊ฒฝ์ฐ ์ฌ๊ท๋ฅผ ์ข ๋ฃํ๋ฉด ๋๋ค.
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 |