
GNN๊ณต๋ถํ๋ฌ์๋ค๊ฐ ๋ด๋ณ ๋ง๊ธฐ
-> ๋งจ๋ ํธ๋ BFS, DFS ๋ ํ๋ฆฌ๋ค~
์ง์ง BFS, DFS ๋ฌธ์ ๋ ์ข๋ง ๋ณต์กํด์ ธ๋ ๋ฌดํ ํ๋ฆผ์~
์ ๋ ์ฝํ ๊ฐ๊ธฐ์ ์๋ ๊ผญ ๊ฐ๋จํ ์์ ๋ก ์ธ์์ ์ ์ฉํ์! ๋ผ๋ ๋ง์ธ๋๋ก ๊ฐ์
| ํญ๋ชฉ | BFS (Breadth-First Search) | DFS (Depth-First Search) |
|---|---|---|
| ํ์ ๋ฐฉ์ | ๊ฐ๊น์ด ๋ ธ๋๋ถํฐ ์ฐจ๋ก๋๋ก ํ์ | ๊น์ ๋ ธ๋๋ถํฐ ๋๊น์ง ํ์ ํ ๋๋์์ด |
| ์๋ฃ๊ตฌ์กฐ | ํ (Queue) | ์คํ(Stack) or ์ฌ๊ท(Recursion) |
| ์ฌ์ฉ ์์ | ์ต๋จ ๊ฑฐ๋ฆฌ, ํผ์ง ํ์ ๋ฑ | ์์ญ ํ์, ์กฐํฉ ํ์, ๊ฒฝ๋ก ์กด์ฌ ์ฌ๋ถ |
| ๊ตฌํ ๋์ด๋ | ๋น๊ต์ ์ฌ์ | ์ฌ๊ท ํธ์ถ์ ์ต์ํด์ผ ํจ |
| ๋ํ ์์ | ๋ฏธ๋ก์์ ์ต๋จ ๊ฒฝ๋ก | ์ผ์ ๋ฉ์ด๋ฆฌ ๊ฐ์ ์ธ๊ธฐ |
N x M ํฌ๊ธฐ์ ๋ฏธ๋ก๊ฐ 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
1์ ์ด๋ ๊ฐ๋ฅํ ๊ธธ, 0์ ๋ฒฝ์
๋๋ค.5 6
101010
111111
000001
111111
111111
10
from collections import deque
def bfs_maze_escape(maze):
n = len(maze)
m = len(maze[0])
visited = [[False]*m for _ in range(n)]
dx = [-1, 1, 0, 0] # ์ํ์ข์ฐ
dy = [0, 0, -1, 1]
queue = deque()
queue.append((0, 0))
visited[0][0] = True
while queue:
x, y = queue.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < n and 0 <= ny < m and not visited[nx][ny]:
if maze[nx][ny] == 1:
queue.append((nx, ny))
visited[nx][ny] = True
maze[nx][ny] = maze[x][y] + 1 # ์ด์ ์นธ ๊ฑฐ๋ฆฌ + 1
return maze[n-1][m-1]
visited: ์ด๋ฏธ ๋ฐฉ๋ฌธํ ๋
ธ๋๋ฅผ ๋ค์ ๋ฐฉ๋ฌธํ์ง ์๊ธฐ ์ํ ์ฒดํฌ.queue: BFS ํ์์ ์ํ ํ.maze[x][y] = maze[x][y] + 1: ์ต๋จ ๊ฑฐ๋ฆฌ ๋์ .N x M ํฌ๊ธฐ์ ์ผ์ ํ์์
0: ์ผ์์ด ์์ฑ๋ ์ ์๋ ์นธ1: ๋ฒฝ์ํ์ข์ฐ๋ก ์ฐ๊ฒฐ๋ 0 ๋ฌถ์์ ์ผ์ 1๊ฐ๋ก ๋ณธ๋ค๋ฉด, ์ ์ฒด ์ผ์ ๋ฉ์ด๋ฆฌ๋ ๋ช ๊ฐ์ธ๊ฐ์?
4 5
00110
00011
11111
00000
3
def dfs(x, y, graph):
n = len(graph)
m = len(graph[0])
if x < 0 or x >= n or y < 0 or y >= m:
return False
if graph[x][y] == 0:
graph[x][y] = 1 # ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
dfs(x-1, y, graph)
dfs(x+1, y, graph)
dfs(x, y-1, graph)
dfs(x, y+1, graph)
return True
return False
def count_ice_areas(graph):
n = len(graph)
m = len(graph[0])
count = 0
for i in range(n):
for j in range(m):
if dfs(i, j, graph):
count += 1
return count
dfs: ํ์ฌ ์์น์์ ์ธ์ ํ 0์ ์ฌ๊ท์ ์ผ๋ก ํ์.1๋ก ๋ฐ๊ฟ ์ฌํ์ ๋ฐฉ์ง.๊ฐ ์ฝ๋์์
๐ "๋๊น์ง ๋ค์ด๊ฐ์ ํ๋์ ์ฐ๊ฒฐ๋ ๋ฉ์ด๋ฆฌ๋ฅผ ๋ค ๋ณด๊ณ ๋์ค๋ ๋ฐฉ์"์ด ํ์ํ ๋
์: ์ฐ๊ฒฐ๋ ๊ตฌ์ญ, ์กฐํฉ, ๊ฒฝ๋ก ์กด์ฌ ์ฌ๋ถ ๋ฑ
"๊ฐ ์ ์์ ๋งํผ ๊น์ด ํ๊ณ ๋ค์ด, ์ ์ฒด๋ฅผ ํ ๋ฒ์ ํ์ธํ๊ณ ์จ๋ค."
๐ "๊ฐ์ฅ ๊ฐ๊น์ด ๊ฒฝ๋ก๋ฅผ ๋จผ์ ํ์ํ๊ณ , ๋จ๊ณ๋ณ๋ก ๋ํ๊ฐ๋ ๋ฐฉ์"์ด ํ์ํ ๋
์: ์ต๋จ ๊ฑฐ๋ฆฌ, ์ต์ ํ์, ๋ ๋ฒจ ํ์ ๋ฑ
"ํ ์นธ์ฉ, ๊ฐ๊น์ด ๊ณณ๋ถํฐ ์ฐจ๋ก๋๋ก ํ์ํด์ ๊ฐ์ฅ ๋น ๋ฅธ ๊ธธ์ ์ฐพ๋๋ค."