dfs

๋ฐฉํ–ฅ ์—†๋Š” ๊ทธ๋ž˜ํ”„ ์ฃผ์–ด์ง -> ์—ฐ๊ฒฐ ์š”์†Œ(connected component) ๊ฐœ์ˆ˜ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์•„์ด๋””์–ด๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ (DFS/BFS)๋ฐฉ๋ฌธ ๋ชปํ•œ ๋…ธ๋“œ ํ•˜๋‚˜๋ผ๋„ ์žˆ๋‹ค๋ฉด ์นด์šดํŠธ ์ฆ๊ฐ€ํ•˜๊ณ ๊ทธ ๋ฐฉ๋ฌธ ๋ชปํ•œ ๋…ธ๋“œ (false ๋…ธ๋“œ)์—์„œ ์‹œ์ž‘ํ•ด์„œ ๋‹ค์‹œ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰false ๋…ธ๋“œ ์—†์„ ๋•Œ๊นŒ์ง€ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋ฐ˜๋ณต ํ’€์ด - DFS ์‚ฌ์šฉimport sysinput = sys.stdin.readlineN, M = map(int, input().split())graph = [[] for _ in range(N+1)]for _ in range(M): u, v = map(int, input().split()) graph[u].append(v) graph[v].append(u)visited = [False] * (N+..
ํ’€์ด 1: DFS, ์žฌ๊ท€์ด์šฉ - RecursionErrordef dfs(x, y): visited[x][y] = True for dx, dy in [(1,0), (-1,0), (0,1), (0,-1)]: nx, ny = x + dx, y + dy if 0 ์ฒซ๋ฒˆ์งธ ํ’€์ด์ด๋‹ค. DFS์™€ ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ’€์—ˆ๋”๋‹ˆ Recursion Error๊ฐ€ ๋‚ฌ๋‹ค.Recursion Error: ์žฌ๊ท€์™€ ๊ด€๋ จ๋œ ์—๋Ÿฌ. ์ฃผ๋กœ Python์ด ์ •ํ•œ ์ตœ๋Œ€ ์žฌ๊ท€ ๊นŠ์ด๋ณด๋‹ค ๋” ๊นŠ์–ด์งˆ ๋•Œ.์ด ๊ฒฝ์šฐ, ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ๋ฐ”๊พธ์–ด์•ผ ํ•œ๋‹ค.BFS๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ’€๊ฑฐ๋‚˜, ์žฌ๊ท€ ์—†์ด DFS๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ์ฐธ๊ณ  ๋งํฌ : https://yesolz.tistory.com/entry/Python-%EB%B0%B1%EC%A..
๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋ฌธ์ œ๋กœ DFS, BFS ๋‘˜๋‹ค ์‚ฌ์šฉํ•˜์—ฌ ํ’€์ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.์•„๋ž˜๋Š” DFS๋ฅผ ํ™œ์šฉํ•œ ํ’€์ด์ด๋‹ค.  DFSn = int(input()) # ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ์ง€๋„์˜ ํฌ๊ธฐ ์ž…๋ ฅ# ์ง€๋„ ์ž…๋ ฅ ๋ฐ›๊ธฐmap_data = [list(map(int, input())) for _ in range(n)]visited = [[False] * n for _ in range(n)] # ๋ฐฉ๋ฌธ ์—ฌ๋ถ€๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”def dfs(x, y): visited[x][y] = True # ํ˜„์žฌ ์œ„์น˜๋ฅผ ๋ฐฉ๋ฌธํ–ˆ์Œ์„ ํ‘œ์‹œ count = 1 # ๋‹จ์ง€์˜ ํฌ๊ธฐ๋ฅผ ์„ธ๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” for dx, dy in [(1,0), (-1,0), (0,1), (0,-1)]: # ํ˜„์žฌ ์œ„์น˜์—์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด ๋ฐ˜๋ณต..
๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋ฌธ์ œ๋กœdfs, bfs ๋‘˜๋‹ค ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํ’€์ด๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ๋‹ค.   DFS: dictionary(์ธ์ ‘๋ฆฌ์ŠคํŠธ), ์žฌ๊ท€ ์‚ฌ์šฉn = int(input()) # ์ปดํ“จํ„ฐ์˜ ์ˆ˜ (1~100 ์ •์ˆ˜)m = int(input()) # ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ์ปดํ“จํ„ฐ ์Œ์˜ ์ˆ˜graph = {i: [] for i in range(1, n + 1)} # ๊ฐ ์ปดํ“จํ„ฐ์™€ ์ด์–ด์ง„ ์ปดํ“จํ„ฐ๋“ค์„ ์ €์žฅํ•  ๊ทธ๋ž˜ํ”„ ์ดˆ๊ธฐํ™”for _ in range(m): a, b = map(int, input().split()) # ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ ์Œ์„ ์ž…๋ ฅ๋ฐ›์Œ graph[a].append(b) # a์™€ b๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๊ทธ๋ž˜ํ”„์— ์ถ”๊ฐ€ graph[b].append(a) # b์™€ a๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๊ทธ๋ž˜ํ”„์— ์ถ”๊ฐ€visited = ..
1. n, m, v ์ž…๋ ฅ ๋ฐ›๊ธฐ (๋„์–ด์“ฐ๊ธฐ ์ž…๋ ฅ)n, m, v = map(int, input().split())N(์ •์ ์ˆ˜), M(๊ฐ„์„ ์ˆ˜), V(ํƒ์ƒ‰ ์‹œ์ž‘ํ•  ์ •์  ๋ฒˆํ˜ธ) 2. ๊ทธ๋ž˜ํ”„ ์ž…๋ ฅ ๋ฐ›๊ธฐ (๋…ธ๋“œ ์—ฐ๊ฒฐ ์ •๋ณด) - ์ธ์ ‘ ํ–‰๋ ฌgraph = [[0] * (n+1) for _ in range(n+1)]for i in range(m): a, b = map(int, input().split()) graph[a][b] = graph[b][a] = 1 ์ •์  ๋ฒˆํ˜ธ์™€ ์ธ๋ฑ์Šค ์ผ์น˜์‹œํ‚ค๊ธฐ ์œ„ํ•ด n+1๋กœ ์ดˆ๊ธฐํ™”๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์ด๋ฏ€๋กœ graph[a][b] = graph[b][a] = 1 ** ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅํ•˜๊ธฐdef print_graph(graph): for row in graph[1:]: # 0๋ฒˆ์งธ ํ–‰๊ณผ ์—ด์€ ์‚ฌ์šฉํ•˜..
DFS/BFS ๋ฅผ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ๊ธฐ์ดˆ : ์Šคํƒ, ํ, ์žฌ๊ท€ํ•จ์ˆ˜ํƒ์ƒ‰ : ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ณผ์ •๋Œ€ํ‘œ์ ์ธ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ DFS, BFS - ๊ธฐ๋ณธ ์ž๋ฃŒ๊ตฌ์กฐ์ธ ์Šคํƒ๊ณผ ํ์—๋Œ€ํ•œ ์ดํ•ด ํ•„์š”  ์Šคํƒ์Šคํƒ : ์„ ์ž…ํ›„์ถœํŒŒ์ด์ฌ์—์„œ ์Šคํƒ์„ ์ด์šฉํ•  ๋•Œ๋Š” ๋ณ„๋„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.๊ธฐ๋ณธ ๋ฆฌ์ŠคํŠธ์—์„œ append()์™€ pop() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.append() ๋ฉ”์„œ๋“œ๋Š” ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ€์žฅ ๋’ค์ชฝ์— ์‚ฝ์ž…, pop() ๋ฉ”์„œ๋“œ๋Š” ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ€์žฅ ๋’ค์ชฝ์—์„œ ๋ฐ์ดํ„ฐ ๊บผ๋‚ด๊ธฐ ๋•Œ๋ฌธ  ํํ : ์„ ์ž…์„ ์ถœcollections ๋ชจ๋“ˆ์—์„œ ์ œ๊ณตํ•˜๋Š” deque ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์ž.deque๋Š” ์Šคํƒ๊ณผ ํ์˜ ์žฅ์ ์„ ๋ชจ๋‘ ์ฑ„ํƒํ•œ ๊ฒƒ์ธ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๋นผ๋Š” ์†๋„๊ฐ€ ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒํ˜•์— ๋น„ํ•ด ํšจ์œจ์ ์ด๋ฉฐque..
yesolz
'dfs' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก