๋ฐฉํฅ ์๋ ๊ทธ๋ํ ์ฃผ์ด์ง -> ์ฐ๊ฒฐ ์์(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+..
dfs
ํ์ด 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..