Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[JavaScript/section 8] 02 - ์ด์ง„์ˆ˜ ์ถœ๋ ฅ(์žฌ๊ท€)

_์„ฑํ˜ธ_ 2022. 10. 14. 16:15
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ 02 - ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ์ด์ง„์ˆ˜ ์ถœ๋ ฅ

10์ง„์ˆ˜ N์ด ์ž…๋ ฅ๋˜๋ฉด 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋‹จ, ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

์ด์ง„์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ณผ์ •

  • 1๋‹จ๊ณ„: ๋ณ€ํ™˜ํ•˜๋ ค๋Š” ์ˆ˜๋ฅผ 2๋กœ ๋‚˜๋ˆˆ ํ›„ ๋ชซ๊ณผ ๋‚˜๋จธ์ง€ ๊ธฐ๋ก
  • 2๋‹จ๊ณ„: 1๋‹จ๊ณ„์—์„œ ๊ณ„์‚ฐํ•œ ๋ชซ์„ 2๋กœ ๋‚˜๋ˆˆ ํ›„ ๋ชซ๊ณผ ๋‚˜๋จธ์ง€ ๊ธฐ๋ก, ...๋ชซ์ด 0์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
  • ๊ธฐ๋กํ•œ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ์•„๋ž˜์—์„œ ์œ„๋กœ ์ฝ์œผ๋ฉด 2์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ ์™„๋ฃŒ

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

์ด์ง„์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ณผ์ •์„ ๋ณด๋ฉด ๊ธฐ๋กํ•œ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ์•„๋ž˜์—์„œ ์œ„๋กœ ์ฝ์–ด์•ผ(LIFO ๊ตฌ์กฐ) 2์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. (์ฐธ๊ณ ) ์žฌ๊ท€ํ•จ์ˆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ๋ชซ(L)์ด 0์ด ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•˜์—ฌ DFS() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š”๋ฐ ์ธ์ž๋Š” 2๋กœ ๋‚˜๋ˆˆ ๋ชซ(์ •์ˆ˜)์„ ๋„ฃ๋Š”๋‹ค.
  • ๋ชซ์ด 0์ด ๋‚˜์˜ค๋ฉด return ํ•œ๋‹ค.
  • ์Šคํƒ์— ์ €์žฅ๋œ ํ•จ์ˆ˜๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ํ˜ธ์ถœํ•˜์—ฌ 2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ answer ๋ณ€์ˆ˜์— ๋ˆ„์ ์‹œํ‚จ ํ›„ ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.
  • ์Šคํƒ์— ์ €์žฅ๋œ ์Šคํƒ ํ”„๋ ˆ์ž„์ด ๋ชจ๋‘ pop ๋˜๊ณ  ๋‚˜๋ฉด answer ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

๐Ÿ“ ์†Œ์Šค ์ฝ”๋“œ

function solution(n) {
  let answer = '';

  function DFS(L) {
    if (L === 0) return;
    else {
      DFS(parseInt(L / 2)); 
      answer += L % 2; // ์ˆœ์„œ ์ค‘์š”โ— DFS() ํ•จ์ˆ˜ ํ˜ธ์ถœ๋ณด๋‹ค ์œ„์— ์žˆ์œผ๋ฉด โŒ
    }
  }
  DFS(n);
  return answer;
}

console.log(solution(11));