๋ฐ์ํ
Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- dacon
- matplotlib
- DFS
- ๋ธ๋ผ์ฐ์ ์คํ
- MacOS
- PYTHON
- ์ง ๊ฐ ์์ธก ๋ถ์
- Do_it
- np.zeros_like
- jdbc
- sql
- java
- ์ต์
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ ํ ํฌ ํ์ด์ฌ
- mysql
- ์ด์ง์ ๋ณํ
- ์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ฝ๋ฉํ ์คํธ๋ค
- ํ์ ๋ณ์
- BFS
- ํฉํ ๋ฆฌ์ผ ์ง๋ฒ
- ์๋ฐ
- ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ
- Extended Slices
- 2BPerfect
- Do it
- ๋ฐฑ์ค
- ๋ฐ์ค๊ทธ๋ํ
- ์ฐธ์กฐ ๋ณ์
- ์์ด
Archives
- Today
- Total
๐ฆ ๊ณต๋ฃก์ด ๋์!
๋๋น ์ฐ์ ํ์(BFS) ๋ณธ๋ฌธ
๋๋น ์ฐ์ ํ์(BFS)
from collections import deque
#BFS ๋ฉ์๋ ์ ์
def bfs(graph, start, visited):
# ํ(Queue) ๊ตฌํ์ ์ํด deque ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
queue = deque([start])
# ํ์ฌ ๋
ธ๋๋ฅผ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
visited[start] = True
# ํ๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณต
while queue:
# ํ์์ ํ๋์ ์์๋ฅผ ๋ฝ์ ์ถ๋ ฅํ๊ธฐ
v = queue.popleft()
print(v, end=' ')
# ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ์ธ์ ํ ์์๋ค์ ํ์ ์ฝ์
for i in graph[v]:
if not visited[i]:
queue.append(i)
visited[i] = True
# ๊ฐ ๋
ธ๋๊ฐ ์ฐ๊ฒฐ๋ ์ ๋ณด๋ฅผ ํํ (2์ฐจ์ ๋ฆฌ์คํธ)
graph = [
[],
[2,3,8],
[1,7],
[1,4,5],
[3,5],
[3,4],
[7],
[2,6,8],
[1,7]
]
# ๊ฐ ๋
ธ๋๊ฐ ๋ฐฉ๋ฌธ๋ ์ ๋ณด๋ฅผ ํํ(1์ฐจ์ ๋ฆฌ์คํธ)
visited=[False]*9
# ์ ์๋ DFS ํจ์ ํธ์ถ
bfs(graph,1,visited)
>>> 1 2 3 8 7 4 5 6
# ๋ฏธ๋ก ํ์ถ
# BFS ์์ค์ฝ๋ ๊ตฌํ
def bfs(x,y):
# ํ(Queue) ๊ตฌํ์ ์ํด deque ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
queue = deque()
queue.append((x,y))
# ํ๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณตํ๊ธฐ
while queue:
x,y= queue.popleft()
# ํ์ฌ ์์น์์ 4๊ฐ์ง ๋ฐฉํฅ์ผ๋ก์ ์์น ํ์ธ
for i in range(4):
nx=x+dx[i]
ny=y+dy[i]
# ๋ฏธ๋ก ์ฐพ๊ธฐ ๊ณต๊ฐ์ ๋ฒ์ด๋ ๊ฒฝ์ฐ ๋ฌด์
if nx<0 or nx>=n or ny<0 or ny>=m:
continue
# ํด๋น ๋
ธ๋๋ฅผ ์ฒ์ ๋ฐฉ๋ฌธํ๋ ๊ฒฝ์ฐ์๋ง ์ต๋จ ๊ฑฐ๋ฆฌ ๊ธฐ๋ก
if graph[nx][ny] ==1:
graph[nx][ny]=graph[x][y]+1
queue.append((nx,ny))
# ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ ๋ฐํ
return graph[n-1][m-1]
from collections import deque
# N, M์ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถํ์ฌ ์
๋ ฅ ๋ฐ๊ธฐ
n,m =map(int,input().split())
# 2์ฐจ์ ๋ฆฌ์คํธ์ ๋งต ์ ๋ณด ์
๋ ฅ ๋ฐ๊ธฐ
graph=[]
for i in range(n):
graph.append(list(map(int,input())))
# ์ด๋ํ ๋ค ๊ฐ์ง ๋ฐฉํฅ ์ ์ (์, ํ, ์ข, ์ฐ)
dx = [-1,1,0,0]
dy = [0,0,-1,1]
# BFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ ์ถ๋ ฅ
print(bfs(0,0))
๋ฐ์ํ
'Development > CodingTest' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] Python DFS์ BFS (0) | 2021.12.30 |
---|---|
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ (0) | 2021.12.28 |
๊น์ด ์ฐ์ ํ์(DFS) (0) | 2021.12.27 |
[ํ๋ก๊ทธ๋๋จธ์ค] Java ์์์ฐพ๊ธฐ (0) | 2021.12.25 |
[์์ด] Visited๋ฅผ ์ด์ฉํ ์์ด (0) | 2021.12.24 |