๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) ] section08 - 1 - ์žฌ๊ท€ํ•จ์ˆ˜

by YWTechIT 2021. 9. 15.
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);
}
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€