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

๋ฌธ์ œ

 

๋ฌธ์ œํ’€์ด

๋จผ์ € ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŒŒ์Šค์นผ์˜ ์‚ผ๊ฐํ˜•์„ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๊ฐ’์ด ์ดํ•ญ๊ณ„์ˆ˜๋ฅผ ์ด์šฉํ•ด ๊ณ„์‚ฐํ•œ ์ตœ์ข…๊ฐ’๊ณผ ๊ฐ™์Œ์„ ์•Œ์•„์•ผ ํ•œ๋‹ค.

 

ํŒŒ์Šค์นผ์˜ ์‚ผ๊ฐํ˜•๊ณผ ์ดํ•ญ ๊ณ„์ˆ˜ ์›๋ฆฌ

๋‹ค์Œ ๊ทธ๋ฆผ์—์„œ ๋ณธ ๋ฐ”์™€ ๊ฐ™์ด ํŒŒ์Šค์นผ์˜ ์‚ผ๊ฐํ˜•์„ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ ๊ฐ’์€ (1 × 1) + (2 × 3) + (3 × 3) + (4 × 1)์ด๋ฉฐ N์ด 4์ผ ๊ฒฝ์šฐ์— ์ˆ˜์—ด ์ˆœ์„œ๊ฐ€ ์–ด๋–ป๋“  ๊ฐ„์— {1 3 3 1}์˜ ๋ฒ”์œ„ ๋‚ด์—์„œ ๊ฒฐ๊ณผ๊ฐ’์ด ์‚ฐ์ถœ๋œ๋‹ค.

 

๋˜ํ•œ ์ด๋ฅผ ์ข€ ๋” ๊ตฌํ•˜๊ธฐ ํŽธํ•œ ์ดํ•ญ ๊ณ„์ˆ˜๋กœ ํ‘œํ˜„ํ•œ๋‹ค๋ฉด 3C0 3C1 3C2 3C3๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

 

{1 3 3 1}์„ ์ดํ•ญ ๊ณ„์ˆ˜๋กœ ๊ตฌํ•ด๋‘์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ˆœ์—ด์„ ๊ตฌํ•  ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ํŒŒ์Šค์นผ์˜ ์‚ผ๊ฐํ˜• ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•˜๋Š”๋ฐ ์ด๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ƒ ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๋‹ค.

 

์ฝ”๋“œ

function solution(n, f) {
  let answer = [];
  let flag = 0;
  let dy = Array.from(Array(11), () => Array(30).fill(0));
  let ch = Array.from({length: n + 1}, () => 0);
  let p = Array.from({length: n}, () => 0);
  let b = Array.from({length: n}, () => 0);
  
  function combi(n, r) { //ํŒŒ์Šค์นผ์˜ ์‚ผ๊ฐํ˜•์— ๋Œ€ํ•œ ์ดํ•ญ๊ณ„์ˆ˜ ๊ฐ’์„ ์‚ฌ์ „์— ๋จผ์ € ๊ตฌํ•ด๋‘”๋‹ค.
    if(dy[n][r] > 0) return dy[n][r];
    if(n === r || r === 0) return 1;
    else return dy[n][r] = combi(n - 1, r - 1) + combi(n - 1, r);
  }

  function DFS(L, sum) {
    if(flag) return
    if(L === n && sum === f) {
        answer = p.slice();
        flag = 1;
    }
    else {
      for(let i = 1; i <= n; i++) {
        if(ch[i] === 0) {
          ch[i] = 1;
          p[L] = i;
          DFS(L + 1, sum+(b[L] * p[L])); //{1, 3, 3, 1} * {1, 2, 3, 4}, {2, 1, 3, 4} ...
          ch[i] = 0;
        }
      }
    }
  }
  
  for(let i = 0; i < n; i++) {
    b[i] = combi(n - 1, i);
  }

  DFS(0, 0);
  return answer;
}

console.log(solution(4, 16));
๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2024/10   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ