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

๋ฌธ์ œ

 

 

๋ฌธ์ œํ’€์ด

๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์ „ ํ•ด๋‹น ๊ณต์‹์ด ์–ด๋–ป๊ฒŒ ์„ฑ๋ฆฝ์ด ๋˜๋Š”์ง€ ์‚ดํŽด ๋ณด์ž. ์˜ˆ๋ฅผ ๋“ค์–ด 5๊ฐœ์˜ ๊ฒฝ์šฐ์ˆ˜ ์ค‘ 3๊ฐœ๋ฅผ ๋ฝ‘๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž.

 

์ด๋•Œ ๊ฐ€์žฅ ํฐ ๊ฐ’์ธ 5(n)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ดค์„ ๋•Œ, ์กฐํ•ฉ์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ํฌ๊ฒŒ 5๋ฅผ ํฌํ•จํ•œ ๊ฒฝ์šฐ์™€ 5๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์ธ 2๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.

 

5๋ฅผ ํฌํ•จํ•  ๊ฒฝ์šฐ์—๋Š” ๋‚จ์€ 4๊ฐœ์˜ ๊ฒฝ์šฐ์ˆ˜ ์ค‘ ๋‚˜๋จธ์ง€ ์ž๋ฆฌ 2๊ฐœ(r-1)๋ฅผ ๋ฝ‘๊ณ  5๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” ๋‚จ์€ 4๊ฐœ ๊ฒฝ์šฐ์ˆ˜ ์ค‘ ๋‚˜๋จธ์ง€ 3๊ฐœ(r)๊ฐœ๋ฅผ ๋ฝ‘์€ ๊ฒƒ์ด๋‹ค.


์กฐํ•ฉ์ˆ˜

 

์ฝ”๋“œ

function solution(n, r) {
  let answer = 0;
  
  function DFS(n , r) {
    if(n === r || r === 0) return 1; //๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๊ฒฝ์šฐ์ˆ˜ 1์„ ๋ฐ˜ํ™˜
    else return DFS(n - 1, r - 1) + DFS(n - 1, r)
  }

  answer = DFS(n, r);
  return answer;
}

console.log(solution(5 , 3));

 

๋ฉ”๋ชจ์ด์ œ์ด์…˜

์กฐํ•ฉ์ˆ˜

๋‹ค์‹œ ์กฐํ•ฉ์ˆ˜ ํŠธ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด์ž.

 

ํŠธ๋ฆฌ์—์„œ ๊นŠ์ด ํƒ์ƒ‰์„ ํ•˜๋‹ค ๋ณด๋ฉด ์œ„ ์ด๋ฏธ์ง€์—์„œ ํ‘œ์‹œํ•œ ๋ฐ”์™€ ๊ฐ™์ด ๋˜‘๊ฐ™์€ ์กฐํ•ฉ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋ฏธ ํ•ด๋‹น ์กฐํ•ฉ์ˆ˜๋Š” ์ด์ „ ํƒ์ƒ‰์—์„œ ๊ตฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์žฌ๊ท€๋ฅผ ํ•œ๋ฒˆ ๋” ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์ฒ™ ๋น„ํšจ์œจ์ ์ด๋‹ค.

 

์ง€๊ธˆ์€ ๊ตฌํ•ด์•ผ ๋  ๊ฒฝ์šฐ์ˆ˜๊ฐ€ ์ ์–ด์„œ ์ƒ๊ด€์€ ์—†์œผ๋‚˜ ๊ทธ ๊ฐ’์ด ์ปค์งˆ ๊ฒฝ์šฐ์—๋Š” ์—ฐ์‚ฐ์— ๋”ฐ๋ฅธ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์ปค์ง€๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ 

์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋‹ค.

๋ฉ”๋ชจ์ด์ œ์ด์…˜(memoization)์€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ผํ•œ ๊ณ„์‚ฐ์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ•  ๋•Œ, ์ด์ „์— ๊ณ„์‚ฐํ•œ ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•จ์œผ๋กœ์จ ๋™์ผํ•œ ๊ณ„์‚ฐ์˜ ๋ฐ˜๋ณต ์ˆ˜ํ–‰์„ ์ œ๊ฑฐํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ๋™์  ๊ณ„ํš๋ฒ•์˜ ํ•ต์‹ฌ์ด ๋˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค.

 

function solution(n, r) {
  let answer = 0;
  let dy = Array.from(Array(35), () => Array(35).fill(0)); //๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ์œ„ํ•ด ๊ฐ ์กฐํ•ฉ์ˆ˜๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ 2์ฐจ์› ๋ฐฐ์—ด ์ƒ์„ฑ
  
  function DFS(n , r) {
    if(dy[n][r] !== 0) return dy[n][r]; //๋งŒ์•ฝ์— ํ•ด๋‹น ์กฐํ•ฉ์ด ์ด์ „ ํƒ์ƒ‰์—์„œ ๊ตฌํ–ˆ์„ ๊ฒฝ์šฐ์—๋Š” ๋”๋Š” ํƒ์ƒ‰์„ ํ•˜์ง€ ์•Š๊ณ  ๋ฐฐ์—ด์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜
    if(n === r || r === 0) return 1;
    else return dy[n][r] = DFS(n - 1, r - 1) + DFS(n - 1, r) //๊ฐ ์กฐํ•ฉ์˜ ๊ฒฝ์šฐ์ˆ˜๋ฅผ ๋ฉ”๋ชจ์ด์ œ์ด์…˜
  }

  answer = DFS(n, r);
  return answer;
}

console.log(solution(33 , 19));

 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2025/01   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ