์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ch07. Recursive, Tree, Graph(DFS, BFS ๊ธฐ์ดˆ) : ์žฌ๊ท€ ํ•จ์ˆ˜

2023. 11. 17. 11:17ใ†์ธํ”„๋Ÿฐ/์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด ์ž…๋ฌธ : ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„

728x90

 

 

https://hyejin.tistory.com/1251

 

์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ch06. Sorting and Searching(์ •๋ ฌ, ์ด๋ถ„๊ฒ€์ƒ‰๊ณผ ๊ฒฐ์ •์•Œ๊ณ ๋ฆฌ์ฆ˜) : ๋งˆ๊ตฌ๊ฐ„

https://hyejin.tistory.com/1248 ์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ch06. Sorting and Searching(์ •๋ ฌ, ์ด๋ถ„๊ฒ€์ƒ‰๊ณผ ๊ฒฐ์ •์•Œ๊ณ ๋ฆฌ์ฆ˜) : ๋ฎค์ง๋น„๋”” https://hyejin.tistory.com/1247 ์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ch06. Sorting and Sea

hyejin.tistory.com

-> ์ด์ „ ๋ฌธ์ œ ํ’€์ด 

 

 

1. ์žฌ๊ท€ ํ•จ์ˆ˜ 

์„ค๋ช…

์ž์—ฐ์ˆ˜ N์ด ์ž…๋ ฅ๋˜๋ฉด ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ 1๋ถ€ํ„ฐ N๊นŒ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

 

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์€ ์ •์ˆ˜ N(3<=N<=10)์ด ์ž…๋ ฅ๋œ๋‹ค.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์‹œ ์ž…๋ ฅ 1 

3

 

์˜ˆ์‹œ ์ถœ๋ ฅ 1

1 2 3

 

 

๋ฌธ์ œ ํ’€์ด  1

public void DFS(int n)
{
   if (n == 0) {
      return;
   }else {
      DFS(n-1);
      System.out.print(n + " "); // 1 2 3
   }
}

๐Ÿ‘พ : ์„น์…˜7์€ ๋ฌธ์ œ ์ฑ„์ ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์„น์…˜์ด๋‹ค. ์šฐ์„  ๊ธฐ๋ณธ์ ์œผ๋กœ ์žฌ๊ท€ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์œ„ํ•œ ์ฝ”๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ์ •๋‹ต์„ ์ฑ„์ ํ•  ํ•„์š”๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ทธ๋ƒฅ ๋ฌธ์ œ๋งŒ ์ œ๊ณตํ•ด์ค€๋‹ค. 

(์‚ฌ์‹ค ์ •๋‹ต์„ ์–ป๊ณ  ์‹ถ์œผ๋ฉด ์žฌ๊ท€ ํ•จ์ˆ˜ ์‚ฌ์šฉ ์•ˆํ•˜๊ณ  for๋ฌธ์„ ํ†ตํ•ด์„œ ๊ทธ๋ƒฅ 1 2 3 ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ !) 

 

์šฐ์„  ์žฌ๊ท€ ํ•จ์ˆ˜๋ž€ ์ž๊ธฐ ์ž์‹ ์„ ๊ณ„์† ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

์ž๊ธฐ ์ž์‹ ์„ ๊ณ„์† ํ˜ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌดํ•œ ๋ฐ˜๋ณต์— ๋น ์งˆ ์ˆ˜ ์žˆ์–ด if-else ๋ฌธ์„ ๊ฑฐ์˜ ํ•ญ์ƒ ์‚ฌ์šฉํ•œ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ์žฌ๊ท€ ํ•จ์ˆ˜ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด ์Šคํƒ ํ”„๋ ˆ์ž„์„ ์ง์ ‘ ๊ทธ๋ ค๊ฐ€๋ฉด์„œ ํ‘ธ๋Š” ๊ฒƒ๋„ ์ถ”์ฒœํ•œ๋‹ค.

( ์žฌ๊ท€ ํ•จ์ˆ˜ ๊ด€๋ จ ๋ฌธ์ œ๋งŒ ๋‚˜์˜ค๋ฉด ๋ชปํ’€๊ณ  ์ฉ”์ฉ” ๋งค๋Š” ๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” ๊ทธ๋Ÿด ์˜ˆ์ •..ใ…Ž) 

 

์•„๋ฌดํŠผ ์ด ๋ฌธ์ œ๋Š” n ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์ง€๋ฉด 1 ๋ถ€ํ„ฐ n๊นŒ์ง€ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. 

public void DFS(int n)
{
   if (n == 0) {
      return;
   }else {
      System.out.print(n + " "); 
      DFS(n-1);
   }
}

-> ์ฒ˜์Œ์— ๋‚˜๋Š” ์ด๋ ‡๊ฒŒ ํ’€์—ˆ์—ˆ๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ํ’€๋ฉด 3 2 1 ์ถœ๋ ฅ๋œ๋‹ค. 

์™œ๋ƒํ•˜๋ฉด DFS(3) -> DFS(2) -> DSF(1) ๋กœ ์ด๋ ‡๊ฒŒ ์ฐจ๋ก€๋Œ€๋กœ ํ˜ธ์ถœ๋  ๋•Œ 3 ์ถœ๋ ฅํ•˜๊ณ  DFS(2) ํ˜ธ์ถœํ•˜๊ณ , 2 ์ถœ๋ ฅํ•˜๊ณ  DFS(1) ํ˜ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

public void DFS(int n)
{
   if (n == 0) {
      return;
   }else {
      DFS(n-1);
      System.out.print(n + " "); // 1 2 3
   }
}

๋”ฐ๋ผ์„œ ์ด๋ ‡๊ฒŒ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜ ๋ฐ‘์— ์ถœ๋ ฅ๋ฌธ์„ ๋„ฃ์–ด๋‘๋ฉด DFS(3) -> DFS(2) -> DSF(1) ์„ ํ•  ๋•Œ 1 2 3 ์œผ๋กœ ์ฐจ๋ก€๋Œ€๋กœ ์ถœ๋ ฅ๋œ๋‹ค. 

 

์ด๋ฅผ ๊ฐ•์˜์—์„œ ๊ทธ๋ฆผ์„ ๊ทธ๋ ค์ฃผ์…”์„œ ์บก์ณํ•ด์™”๋‹ค. ใ…Žใ…Ž 

 

์šฐ์„  DFS(3) ์„ ๋จผ์ € ํ˜ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šคํƒ์— ๊ฐ€์žฅ ๋จผ์ € ์Œ“์ธ๋‹ค. 

 

 

 

๊ทธ๋ฆฌ๊ณ  3์„ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— DFS(2)๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— line 6๊นŒ์ง€๋งŒ ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ํ•จ๊ป˜ ๊ธฐ์–ตํ•œ๋‹ค. (DFS(3) ํ•จ์ˆ˜๊ฐ€ ์•„์ง ์•ˆ๋๋‚ฌ๋‹ค๋Š” ์–˜๊ธฐ์ž„) 

 

 

DFS(2)๋„ ํ•จ์ˆ˜๋ฅผ ๋‹ค ๋งˆ์น˜๊ธฐ ์ „์— DFS(1)์„ ํ˜ธ์ถœํ•œ๋‹ค. ๋”ฐ๋ผ์„œ DFS(2) ๋„ line 6 ๊นŒ์ง€๋งŒ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋‹ค. 

 

 

DFS(1) ๋„ DFS(0) ์„ ํ˜ธ์ถœํ•˜๊ณ , line 6 ๊นŒ์ง€ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋Š”๋ฐ DFS(0) ์€ ์ด์ œ ์•„๋ฌด๊ฒƒ๋„ ์ˆ˜ํ–‰์•ˆํ•˜๊ณ  return ํ•˜๊ณ  ๋๋‚œ๋‹ค. 

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์‹œ DFS(1)๋กœ ๋Œ์•„์˜ค๊ณ , line 6 ๋‹ค์Œ๋ถ€ํ„ฐ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ 1์„ ๋จผ์ € ์ถœ๋ ฅํ•˜๊ณ  DFS(1) ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค. 

๊ทธ ๋‹ค์Œ DFS(2)๋กœ ๋Œ์•„์™€์„œ, ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ line 6 ๋‹ค์Œ๋ถ€ํ„ฐ ์ˆ˜ํ–‰ํ•ด 2๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  DFS2(2) ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค. 

๋งˆ์ง€๋ง‰์œผ๋กœ DFS(3) ์œผ๋กœ ๋Œ์•„์™€ 3 ์ถœ๋ ฅ์„ ์‹คํ–‰ํ•˜๊ณ , DFS(3) ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค. 

 

 

 

728x90

'์ธํ”„๋Ÿฐ > ์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด ์ž…๋ฌธ : ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ch07. Recursive, Tree, Graph(DFS, BFS ๊ธฐ์ดˆ) : ํŒฉํ† ๋ฆฌ์–ผ  (1) 2023.11.18
์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ch07. Recursive, Tree, Graph(DFS, BFS ๊ธฐ์ดˆ) : ์ด์ง„์ˆ˜ ์ถœ๋ ฅ  (1) 2023.11.17
์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ch06. Sorting and Searching(์ •๋ ฌ, ์ด๋ถ„๊ฒ€์ƒ‰๊ณผ ๊ฒฐ์ •์•Œ๊ณ ๋ฆฌ์ฆ˜) : ๋งˆ๊ตฌ๊ฐ„ ์ •ํ•˜๊ธฐ (๊ฒฐ์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜)  (0) 2023.11.16
์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ch06. Sorting and Searching(์ •๋ ฌ, ์ด๋ถ„๊ฒ€์ƒ‰๊ณผ ๊ฒฐ์ •์•Œ๊ณ ๋ฆฌ์ฆ˜) : ๋ฎค์ง๋น„๋””์˜ค (๊ฒฐ์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜)  (4) 2023.11.09
์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ch06. Sorting and Searching(์ •๋ ฌ, ์ด๋ถ„๊ฒ€์ƒ‰๊ณผ ๊ฒฐ์ •์•Œ๊ณ ๋ฆฌ์ฆ˜) : ์ด๋ถ„ ๊ฒ€์ƒ‰  (0) 2023.11.09