백준 4936(섬의 개수) - BFS 풀기
반응형
import sys
from collections import deque
dw=[-1,-1,-1,0,0,1,1,1]
dh=[-1,0,1,-1,1,-1,0,1]
def bfs(graph,h,w):
queue=deque()
queue.append((h,w))
while queue:
h,w = queue.popleft()
for i in range(8):
nw = w+dw[i]
nh = h+dh[i]
#len(graph[0]) : 가로길이(w), len(graph): 세로길이(h)
if 0<=nw<len(graph[0]) and 0<=nh<len(graph) and graph[nh][nw]==1:
graph[nh][nw]=0
queue.append((nh,nw))
while True:
w, h = map(int, sys.stdin.readline().split())
if w==0 and h==0 :
break
graph = []
cnt=0
for i in range(h):
graph.append(list(map(int,sys.stdin.readline().split())))
for i in range(h):
for j in range(w):
if graph[i][j]==1:
bfs(graph,i,j)
cnt+=1
print(cnt)
반응형
'[백준] Python,Java로 풀기📖 > DFS&BFS' 카테고리의 다른 글
백준 24479(깊이 우선 탐색 1) - Python(파이썬),Java(자바) - DFS (2) | 2022.06.01 |
---|---|
백준 18352(특정 거리의 도시 찾기) - Python(파이썬) -BFS (0) | 2022.05.25 |
백준 16948(데스나이트) - Python(파이썬),자바(Java) (0) | 2022.05.24 |
백준 14716(현수막) - 파이썬(Python),자바(Java) - DFS(재귀함수),sys.setrecursionlimit(10**6),BFS (0) | 2022.05.20 |
백준 1260(DFS와 BFS) - DFS & BFS (0) | 2022.05.18 |