728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ 15 - ์ˆ˜๋“ค์˜ ์กฐํ•ฉ

N๊ฐœ์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๊ทธ ์ˆซ์ž๋“ค ์ค‘ K๊ฐœ๋ฅผ ๋ฝ‘๋Š” ์กฐํ•ฉ์˜ ํ•ฉ์ด ์ž„์˜์˜ ์ •์ˆ˜ M์˜ ๋ฐฐ์ˆ˜์ธ ๊ฐœ์ˆ˜๋Š” ๋ช‡ ๊ฐœ๊ฐ€ ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด 5๊ฐœ์˜ ์ˆซ์ž 2 4 5 8 12๊ฐ€ ์ฃผ์–ด์ง€๊ณ , 3๊ฐœ๋ฅผ ๋ฝ‘์€ ์กฐํ•ฉ์˜ ํ•ฉ์ด 6์˜ ๋ฐฐ์ˆ˜์ธ ์กฐํ•ฉ์„ ์ฐพ์œผ๋ฉด 4+8+12, 2+4+12๋กœ 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

 

๐Ÿ“ ํ’€์ด ๋ฐฉ๋ฒ•

๐Ÿ˜ต ๋‚˜์˜ ํ’€์ด ๋ฐฉ๋ฒ•

if๋ฌธ ์•ˆ์— 2๊ฐœ์˜ ์กฐ๊ฑด์„ ๊ฐ™์ด ์ฃผ์–ด L(๋ ˆ๋ฒจ)์ด k(๋ฝ‘๋Š” ๊ฐœ์ˆ˜)์™€ ๊ฐ™๋”๋ผ๋„ sum์ด 6์˜ ๋ฐฐ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด else๋ฌธ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•˜๊ฒŒ ๋‚˜์˜ค์ง€๋งŒ ์‹œ๊ฐ„์„ ์žก์•„๋จน์„ ์ˆ˜ ์žˆ๋‹ค.๐Ÿคฌ

L์ด k์™€ ๊ฐ™๋‹ค๋ฉด else ๋ฌธ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ if๋ฌธ ๋‚ด๋ถ€์—์„œ sum์ด 6์˜ ๋ฐฐ์ˆ˜์ธ์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋น ์ ธ๋‚˜์™€์•ผ ํ•œ๋‹ค.

function solution(n, k, arr, m) {
  let answer = 0;

  function DFS(L, s, sum) {
    if (L === k && sum % m === 0) {
      answer++;
    } else {
      for (let i = s; i < n; i++) {
        DFS(L + 1, i + 1, sum + arr[i]);
      }
    }
  }

  DFS(0, 0, 0);
  return answer;
}

let arr = [2, 4, 5, 8, 12];
console.log(solution(5, 3, arr, 6));

 

๐Ÿ‘ ๊ฐ•์‚ฌ๋‹˜ ํ’€์ด ๋ฐฉ๋ฒ•

  • L์ด k์™€ ๊ฐ™๋‹ค๋ฉด ํ•˜๋‚˜์˜ ๊ฒฝ์šฐ๊ฐ€ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด๋ฏ€๋กœ sum์ด 6์˜ ๋ฐฐ์ˆ˜์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
  • L์ด k์™€ ๊ฐ™๊ณ  sum์ด 6์˜ ๋ฐฐ์ˆ˜๋ผ๋ฉด answer++์„ ํ•ด์ค€๋‹ค.
function solution(n, k, arr, m) {
  let answer = 0;

  function DFS(L, s, sum) {
    if (L === k) {
      if (sum % m === 0) answer++;
    } else {
      for (let i = s; i < n; i++) {
        DFS(L + 1, i + 1, sum + arr[i]);
      }
    }
  }

  DFS(0, 0, 0);
  return answer;
}

let arr = [2, 4, 5, 8, 12];
console.log(solution(5, 3, arr, 6));
_์„ฑํ˜ธ_