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

[ μžλ°”μŠ€ν¬λ¦½νŠΈ(JavaScript) ] section08 - 1 - μž¬κ·€ν•¨μˆ˜

YWTechIT 2021. 9. 15. 11:19
728x90

πŸ“ section08 - 1 - μž¬κ·€ν•¨μˆ˜

이번 μ„Ήμ…˜μ€ μž¬κ·€ ν•¨μˆ˜μ™€ μ™„μ „ 탐색(깊이 μš°μ„  탐색: DFS)을 λ°°μš΄λ‹€. 이전뢀터 μž¬κ·€ νŒŒνŠΈλŠ” 어렀움을 많이 ν˜Έμ†Œν–ˆλŠ”λ°, 이번 μ„Ήμ…˜μ„ 톡해 감을 λ˜μ°Ύμ•˜μœΌλ©΄ μ’‹κ² λ‹€. 첫 번째 λ¬Έμ œλŠ” μžμ—°μˆ˜ N이 μž…λ ₯됐을 λ•Œ μž¬κ·€ ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ 1λΆ€ν„° NκΉŒμ§€ 좜λ ₯ν•˜λŠ” λ¬Έμ œλ‹€.

 

이전에 μ½”λ“œμ—…μ—μ„œ python으둜 ν•œλ²ˆ ν’€μ–΄λ΄€λ‹€. μ˜ˆμ „μ— μž¬κ·€ 문제λ₯Ό ν’€μ—ˆμ„ λ•ŒλŠ” ν•˜λ‹¨ before λ°©λ²•μ²˜λŸΌ 호좜된 μž¬κ·€ ν•¨μˆ˜λ₯Ό 적고 return이 λ‚˜μ˜€λ©΄ λ‹€μ‹œ μ˜¬λΌκ°€λŠ” 방법을 μ‚¬μš©ν–ˆλŠ”λ°, μ΄κ²ƒμ˜ 단점은 μž¬κ·€κ°€ κΉŠμ–΄μ§€λ©΄ μ–΄λ–€ μ½”λ“œμ—μ„œλΆ€ν„° λ‹€μ‹œ 진행해야 ν•˜λŠ”μ§€ ν—·κ°ˆλ €μ„œ λ§Žμ€ 어렀움을 κ²ͺμ—ˆλ‹€. ν•˜μ§€λ§Œ κ°•μ˜ μ„ μƒλ‹˜κ»˜μ„œ after λ°©λ²•μ²˜λŸΌ ν˜„μž¬ 호좜된 μž¬κ·€ ν•¨μˆ˜μ™€ 호좜된 μ½”λ“œλΌμΈμ„ 적어두면 λ‹€μ‹œ λŒμ•„μ™”μ„ λ•Œ μ–΄λ””μ„œλΆ€ν„° μ§„ν–‰λ˜λŠ”μ§€ λ°”λ‘œ 확인할 수 μžˆμ–΄ ν—·κ°ˆλ¦΄ 일이 μ—†λ‹€κ³  ν•˜μ…¨λ‹€. μ•žμœΌλ‘œ `DFS` κ΄€λ ¨ 문제λ₯Ό ν’€λ©΄μ„œ μ†μœΌλ‘œ μˆœμ„œλ„λ₯Ό 그릴 λ•Œafter λ°©λ²•μ²˜λŸΌ ν•΄μ•Όκ² λ‹€.

 

 

  1. DFSλ₯Ό μ‹€ν–‰ν•˜λ©΄ L-1 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œλ‹€.
  2. κ³„μ†ν•΄μ„œ L-1ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ‹€ L이 1보닀 μž‘μœΌλ©΄ returnν•˜κ³  stack에 μ €μž₯ν•œ ν•¨μˆ˜λ₯Ό λΆˆλŸ¬μ˜€λ©΄μ„œ console.logλ₯Ό μ‹€ν–‰ν•œλ‹€.

 

728x90

 

let n = 10;

solution(n);

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

  DFS(n);
}
λ°˜μ‘ν˜•