์ƒˆ์†Œ์‹

๐Ÿงฎ ์•Œ๊ณ ๋ฆฌ์ฆ˜

DFS (๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰) , BFS (๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰)

  • -

ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (DFS)

DFS์˜ ์ •์˜

  • Depth-First Search : ๊นŠ์ด ์šฐ์„  ์•Œ๊ณ ๋ฆฌ์ฆ˜, ๊ทธ๋ž˜ํ”„์˜ ๊นŠ์€ ๋…ธ๋“œ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
  • ๋•Œ๋ฌธ์— DFS๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ๊ทธ๋ž˜ํ”„์™€ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์— ๊ด€ํ•œ ๋ถ€๋ถ„์„ ์•Œ์•„์•ผํ•œ๋‹ค. + ์Šคํƒ(stack)
  • ํ”ํžˆ ๋ฏธ๋กœ ํƒ์ƒ‰์œผ๋กœ ๋น„์œ ํ•œ๋‹ค. ๋ง‰๋‹ค๋ฅธ ๊ธธ์— ๋„๋‹ฌํ• ๋•Œ ๊นŒ์ง€ ํ•œ์ชฝ๋ฐฉํ–ฅ์„ ํƒ์ƒ‰ํ•˜๋‹ค๊ฐ€, ๋์„ ๋ณด๋ฉด ๋‹ค์‹œ ๊ฐˆ๋ฆผ๊ธธ๋กœ ๋Œ์•„์™€์„œ ๋‹ค๋ฅธ ๊ธธ์„ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
  • ์™„์ „ํƒ์ƒ‰์˜ ์ผ์ข…์ด๋‹ค.

DFS์˜ ์žฅ์ 

ํ˜„์žฌ ํƒ์ƒ‰์ค‘์ธ ๋…ธ๋“œ๋“ค๋งŒ ๊ธฐ์–ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ์ ๊ณ , ๋‹น์—ฐํ•œ ์ด์•ผ๊ธฐ์ง€๋งŒ ์ฐพ์œผ๋ ค๋Š” ๋…ธ๋“œ๊ฐ€ ๊นŠ์„ ๊ฒฝ์šฐ์— BFS๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

DFS ๋‹จ์ 

ํ•ด๊ฐ€ ์—†๋Š” ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๊ฒฝ๋กœ๊ฐ€ ๋๋‚ ๋•Œ ๊นŒ์ง€ ํƒ์ƒ‰ํ•œ๋‹ค. (์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์กฐ๊ฑด์„ ์ง€์ •ํ•˜๊ณ  ์›๋ž˜ ์œ„์น˜๋กœ ๋˜๋Œ์•„์˜ค๋Š” Backtracking์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.)

๊ทธ๋ž˜ํ”„

๊ทธ๋ž˜ํ”„๋Š” ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋…ธ๋“œ(๋™๊ทธ๋ผ๋ฏธ)์™€ ๊ฐ„์„ (์„ ) ์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค. ๊ทธ๋ž˜ํ”„์˜ ํƒ์ƒ‰์ด๋ผ๊ณ  ํ•˜๋ฉด ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋ฅผ ์‹œ์ž‘์œผ๋กœ ๋‹ค์ˆ˜์˜๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค. ๊ฐ„์„ ์œผ๋กœ ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ๋‘ ๋…ธ๋“œ๋Š” ์ธ์ ‘ํ•˜๋‹ค(adjacent)๋ผ๊ณ  ํ•œ๋‹ค.

๊ทธ๋ž˜ํ”„๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ํ‘œํ˜„

ํฌ๊ฒŒ 2๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ์ธ์ ‘ ํ–‰๋ ฌ : 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๊ทธ๋ž˜ํ”„์˜ ์—ฐ๊ฒฐ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• (Adjacency Matrix) ํ–‰๋ ฌ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด 2์ฐจ์› ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ : ๋ฆฌ์ŠคํŠธ๋กœ ๊ทธ๋ž˜ํ”„ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• (Adjacency List) 2์ฐจ์› ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ, ๋…ธ๋“œ์™€ ๊ฑฐ๋ฆฌ๋ฅผ ๋‹ด๊ธฐ ์œ„ํ•œ๊ฒƒ์ด๋ฏ€๋กœ ์ธ์ ‘ํ–‰๋ ฌ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ดํ•ดํ•ด์•ผํ•œ๋‹ค.

์ธ์ ‘ํ–‰๋ ฌ ๋ฐฉ์‹

๊ทธ๋ž˜ํ”„์˜ ๋…ธ๋“œ๊ฐ€ 1๋ถ€ํ„ฐ 6๊นŒ์ง€์ด๋ฏ€๋กœ ์ด 6๊ฐœ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ 6ํ–‰ 6์—ด์ด ๋˜๊ณ , ํ–‰๋ ฌ์—์„œ ๊ฐ ์š”์†Œ๊ฐ’์˜ 1์€ ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ , 0์€ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋œ๋‹ค.

์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹

์ธ์ ‘๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹์€ ๋ชจ๋“  ๋…ธ๋“œ์— ํ•ด๋‹น ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋œ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด์„œ ์œ„ ๊ทธ๋ฆผ์—์„œ ๋…ธ๋“œ 1์„ ๋ณด๊ฒŒ๋˜๋ฉด, 5์™€ 2๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋‹ค. ๊ทธ๋Ÿผ 1๋ฒˆ ๋…ธ๋“œ ์ž๋ฆฌ์— ํ•ด๋‹นํ•˜๋Š” ์ •๋ณด๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. ad_list[1].append(2,5)

 

 

์ธ์ ‘ํ–‰๋ ฌ vs ์ธ์ ‘๋ฆฌ์ŠคํŠธ

๋ญ˜ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹์„์ง€ ๋น„๊ต.

์ธ์ ‘๋ฆฌ์ŠคํŠธ๋Š” ํ•„์š”ํ•œ๋งŒํผ๋งŒ (์ •์ ๊ณผ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๋งŒํผ๋งŒ) ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋ชจํ•˜๊ฒŒ๋˜์ง€๋งŒ , ์ธ์ ‘ํ–‰๋ ฌ์€ ๋ฌด์กฐ๊ฑด์ ์œผ๋กœ ์ •์ x์ •์  ๋งŒํผ์˜ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด์•ผํ•œ๋‹ค.

  • ์ธ์ ‘ํ–‰๋ ฌ : O(V^2)
  • ์ธ์ ‘๋ฆฌ์ŠคํŠธ : O(max(V+E))

ํƒ์ƒ‰ ์†๋„๊ฐ™์€๊ฒฝ์šฐ๋Š” ์ธ์ ‘ํ–‰๋ ฌ์ด ๋” ๋น ๋ฅด๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด์„œ 1๊ณผ 3์˜ ๊ด€๊ณ„๊ฐ€ ์•Œ๊ณ ์‹ถ๋‹ค๋ฉด array[1][3]์œผ๋กœ ์ ‘๊ทผํ•˜๊ฒŒ๋˜๋ฉด O(1)์ด๋‹ค. ํ•˜์ง€๋งŒ ์ธ์ ‘๋ฆฌ์ŠคํŠธ์—์„œ ํ™•์ธํ•˜๋ ค๋ฉด 1์ด๋‚˜ 3๊ณผ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค์„ ์ „๋ถ€ ํ™•์ธํ•ด์•ผํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ์•…์˜๊ฒฝ์šฐ์—๋Š” O(N)์ด๋œ๋‹ค.

๊ฐ„๋‹จํ•˜๊ฒŒ ํ•œ์ค„๋กœ ์ •๋ฆฌํ•˜๋ฉด, Node๊ฐ€ ๋งŽ๋‹ค๋ฉด ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋ฅผ, Edge๊ฐ€ ๋งŽ๋‹ค๋ฉด ์ธ์ ‘ํ–‰๋ ฌ์„ ์“ฐ๋Š”๊ฒŒ ์ข‹๋‹ค.

์ผ๋ฐ˜์ ์ธ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‚˜, PS์—์„œ๋Š” ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์ดˆ๊ณผ๋ณด๋‹ค ์žฆ๊ธฐ๋•Œ๋ฌธ์— ์ธ์ ‘ํ–‰๋ ฌ์„ ์“ฐ๋Š”๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ๋‹ค๊ณ ํ•œ๋‹ค.

 

DFS์˜ ๋™์ž‘ ๋ฐฉ์‹

๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ : ์Šคํƒ์— ์‚ฝ์ž…๋˜์—ˆ๋˜ ๋…ธ๋“œ๊ฐ€ ์ค‘๋ณต์ ์œผ๋กœ ๋˜ ๋‹ค์‹œ ์‚ฝ์ž…๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ.

  1. ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•  ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ์Šคํƒ์— ์‚ฝ์ž…ํ•œ๋‹ค. (๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋„ ํ•œ๋‹ค)
  2. ์Šคํƒ์— ์‚ฝ์ž…๋œ ์ตœ์ƒ๋‹จ ๋…ธ๋“œ ์ฃผ๋ณ€์— ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋˜ ์ธ์ ‘ ๋…ธ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด, ํ•ด๋‹น ๋…ธ๋“œ๋ฅผ ์Šคํƒ์— ์‚ฝ์ž…ํ•˜๊ณ  ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌํ•œ๋‹ค.
  3. (์ด๋•Œ ์ธ์ ‘ ๋…ธ๋“œ๊ฐ€ 1๊ฐœ๋ณด๋‹ค ๋งŽ๋‹ค๋ฉด ๋” ์ž‘์€ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•œ๋‹ค.)
  4. 2๋ฒˆ์„ ์‹คํ–‰ํ• ์ˆ˜ ์—†์œผ๋ฉด(์ตœ์ƒ๋‹จ ๋…ธ๋“œ์— ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด) , ์Šคํƒ์—์„œ ์ตœ์ƒ๋‹จ ๋…ธ๋“œ๋ฅผ ๊บผ๋‚ธ๋‹ค.
  5. 2 - 3๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค. (๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ ๋ ๋•Œ๊นŒ์ง€)

์ด๋ ‡๊ฒŒ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ฒŒ ๋˜๋ฉด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด ๋œ๋‹ค.

์žฌ๊ท€ํ•จ์ˆ˜์˜ ์ˆ˜ํ–‰์€ ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•œ๋‹ค.

๊ฐ„๋‹จํ•˜๊ฒŒ ์žฌ๊ท€ํ•จ์ˆ˜์˜ ๋™์ž‘์›๋ฆฌ๋ฅผ ๋ณด๋ฉด....

  • ์žฌ๊ท€์˜ ๋‚ด๋ถ€ ์ˆ˜ํ–‰์„ ๋ณด๋ฉด, ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ํ˜ธ์ถœ๋˜์—ˆ๋˜ ํ•จ์ˆ˜์˜ ์ˆ˜ํ–‰์ด ๋๋‚˜์•ผ, ๊ทธ ์•ž์˜ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์ด ์ข…๋ฃŒ๋œ๋‹ค.
def recursive_function(i):
	if i == 5:
		return
	print("%d ๋ฒˆ์งธ ์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค."%i)
	recursive_function(i+1)
	print("%d ๋ฒˆ์งธ ์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."%i)

recursive_function(1)

>>> ์ถœ๋ ฅ ๋‚ด์šฉ
1 ๋ฒˆ์งธ ์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
2 ๋ฒˆ์งธ ์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
3 ๋ฒˆ์งธ ์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
4 ๋ฒˆ์งธ ์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
4 ๋ฒˆ์งธ ์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
3 ๋ฒˆ์งธ ์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
2 ๋ฒˆ์งธ ์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
1 ๋ฒˆ์งธ ์žฌ๊ท€ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

graph

graph = [
  [],
  [2, 3, 8],
  [1, 7],
  [1, 4, 5],
  [3, 5],
  [3, 4],
  [7],
  [2, 6, 8],
  [1, 7]
]
visited = [False for i in range(len(graph))]

์žฌ๊ท€๋กœ ๊ตฌํ˜„ํ•œ dfs

def dfs(graph, node, visited) :
  visited[node] = True
    for i in graph[node]:
    if not visited[i] :
      dfs(graph, i , visited)

ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (BFS)

BFS์˜ ์ •์˜

Breadth-Frist-Search : ๋„ˆ๋น„ ์šฐ์„  ์•Œ๊ณ ๋ฆฌ์ฆ˜, ๊ฐ€๊นŒ์šด ๋…ธ๋“œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

DFS์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ํ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ์— ๋„ฃ๊ณ , ๋จผ์ € ๋“ค์–ด์˜จ ๋…ธ๋“œ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ€๊ฒŒ๋˜์–ด ๊ฐ€๊นŒ์šด ๋…ธ๋“œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜๊ฒŒ ๋˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

BFS ๊ตฌํ˜„

  1. ํƒ์ƒ‰ ์‹œ์ž‘ ๋…ธ๋“œ๋ฅผ ํ์— ์‚ฝ์ž…ํ•˜๊ณ  ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌํ•œ๋‹ค.
  2. ํ์—์„œ ๋…ธ๋“œ๋ฅผ ๊บผ๋‚ด๊ณ , ๊บผ๋‚ธ ๋…ธ๋“œ ์ฃผ๋ณ€์—์„œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋ฅผ "๋ชจ๋‘" ํ์— ์‚ฝ์ž…ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฝ์ž…๋œ ํ๋Š” ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌํ•œ๋‹ค. (์ž‘์€ ์ˆซ์ž์˜ ๋…ธ๋“œ๋ถ€ํ„ฐ ์‚ฝ์ž…)
  3. 2๋ฒˆ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

DFS์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(N)์ด๋‹ค.

from collections import deque 

def bfs(graph, start, visited):
  queue = deque([start])
  visited[start] = True
  while queue:
    node = queue.popleft()

    for i i n graph[node]:
      if not visited[i]:
        queue.append(i)
        visited[i] = True

 

 



 

* BFS / DFS ๊ด€๋ จ ๋ฌธ์ œ

 

 

https://www.acmicpc.net/problem/2178

 

2178๋ฒˆ: ๋ฏธ๋กœ ํƒ์ƒ‰

์ฒซ์งธ ์ค„์— ๋‘ ์ •์ˆ˜ N, M(2 ≤ N, M ≤ 100)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” M๊ฐœ์˜ ์ •์ˆ˜๋กœ ๋ฏธ๋กœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ๊ฐ์˜ ์ˆ˜๋“ค์€ ๋ถ™์–ด์„œ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

#๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ BFS๋ฌธ์ œ
from collections import deque


n , m = map(int, input().split())
grid = []
dx = [0,0,1,-1]
dy = [1,-1,0,0]
for _ in range(n):
    grid.append(list(input()))

def bfs(x,y):
    q = deque()
    q.append((x,y))
    grid[0][0] = 1
    while(q):
        x,y = q.popleft()

        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if nx < 0 or ny < 0 or nx >= n or ny >= m :
                continue
            if grid[nx][ny] == "1":
                q.append((nx,ny))
                grid[nx][ny] = grid[x][y] + 1

    return grid[n-1][m-1]


print(bfs(0,0))

 

 

 

https://infinitt.tistory.com/347

 

๋ฐฑ์ค€ (boj) ํŒŒ์ด์ฌ - 1260 : DFS์™€ BFS

๋ฌธ์ œ ๋งํฌ : https://www.acmicpc.net/problem/1260 1260๋ฒˆ: DFS์™€ BFS ์ฒซ์งธ ์ค„์— ์ •์ ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 1,000), ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ M(1 ≤ M ≤ 10,000), ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•  ์ •์ ์˜ ๋ฒˆํ˜ธ V๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ M๊ฐœ์˜ ์ค„์—..

infinitt.tistory.com

์ˆœ์ˆ˜ํ•˜๊ฒŒ DFS์™€ BFS๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๊ฐœ๋…์„ ๊ณต๋ถ€ํ•˜๊ณ  ์ฒ˜์Œ์œผ๋กœ ํ’€๋ฉด ์ข‹์„๊ฒƒ ๊ฐ™๋‹ค.

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.