ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฌธ์ œ

https://choi95.tistory.com/119?category=854389

 

[DFS-Cut Edge]๋™์ „๊ตํ™˜

๋ฌธ์ œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๋‹จ์œ„์˜ ๋™์ „๋“ค์ด ์ฃผ์–ด์ ธ ์žˆ์„๋•Œ ๊ฑฐ์Šค๋ฆ„๋ˆ์„ ๊ฐ€์žฅ ์ ์€ ์ˆ˜์˜ ๋™์ „์œผ๋กœ ๊ตํ™˜ํ•ด์ฃผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ์ฃผ๋ฉด ๋˜๋Š”๊ฐ€?๊ฐ ๋‹จ์œ„์˜ ๋™์ „์€ ๋ฌดํ•œ์ • ์“ธ ์ˆ˜ ์žˆ๋‹ค. ๋ฌธ์ œํ’€์ด ์ฝ”๋“œ function solutio

choi95.tistory.com

๋™์ „๊ตํ™˜ ๋ฌธ์ œ๋Š” ์ด์ „ ํฌ์ŠคํŒ…์—์„œ ๊นŠ์ด ํƒ์ƒ‰(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));
๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2025/02   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
๊ธ€ ๋ณด๊ด€ํ•จ