Algorithm/μΈν”„λŸ°(inflearn)

[JavaScript/section 8] 01 - μž¬κ·€ν•¨μˆ˜

_μ„±ν˜Έ_ 2022. 10. 14. 15:04
728x90
λ°˜μ‘ν˜•

πŸ“Œ 01 - μž¬κ·€ν•¨μˆ˜

μžμ—°μˆ˜ N이 μž…λ ₯되면 μž¬κ·€ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ 1λΆ€ν„° NκΉŒμ§€λ₯Ό 좜λ ₯ν•˜λŠ” λ¬Έμ œμ΄λ‹€.

 

πŸ‘ 풀이 방법

μŠ€νƒ ν”„λ ˆμž„(Stack Frame)에 λŒ€ν•œ λ‚΄μš©μ„ μ•Œκ³  있으면 μž¬κ·€ν•¨μˆ˜λ₯Ό μ΄ν•΄ν•˜λŠ”λ° μžˆμ–΄μ„œ 도움이 λœλ‹€. ν•΄λ‹Ή λ‚΄μš©μ€ λ‹€μŒ μŠ€νƒ ν”„λ ˆμž„(Stack Frame)은 무엇인가? λΌλŠ” 글에 λ”°λ‘œ μ •λ¦¬ν•˜μ˜€λ‹€.

  • solution ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ DFS(n)λ₯Ό ν˜ΈμΆœν•˜λ©΄ ν•΄λ‹Ή ν•¨μˆ˜μ˜ 맀개 λ³€μˆ˜, λ°˜ν™˜ μ£Όμ†Œκ°’. 지역 λ³€μˆ˜ λ“±μ˜ μŠ€νƒ ν”„λ ˆμž„μ΄ μŠ€νƒμ— μ €μž₯λœλ‹€. L이 0이 될 λ•ŒκΉŒμ§€ κ³„μ†ν•΄μ„œ DFS(L - 1) ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄μ„œ ν•΄λ‹Ή ν•¨μˆ˜μ˜ μŠ€νƒ ν”„λ ˆμž„μ΄ μΆ”κ°€λ‘œ μŠ€νƒμ— μ €μž₯λœλ‹€.
  •  L이 0κ³Ό κ°™μœΌλ©΄ returnν•˜κ³  μŠ€νƒμ— μ €μž₯된 ν•¨μˆ˜λ₯Ό μ°¨λ‘€λŒ€λ‘œ ν˜ΈμΆœν•˜μ—¬ console.logλ₯Ό μ‹€ν–‰ν•˜κ³  μ’…λ£Œν•œλ‹€.
  • ν•¨μˆ˜μ˜ 호좜이 μ’…λ£Œλ˜λ©΄, ν•΄λ‹Ή ν•¨μˆ˜μ˜ μŠ€νƒ ν”„λ ˆμž„μ΄ μŠ€νƒμ—μ„œ μ œκ±°λœλ‹€.

 

πŸ“ μ†ŒμŠ€ μ½”λ“œ

function solution(n) {
  function DFS(L) {
    if (L === 0) return;
    else {
      DFS(L - 1);
      console.log(L);
    }
  }
  DFS(n);
}

solution(3);