반응형
풀이
bfs로 풀이함
문제
https://www.acmicpc.net/problem/4963
코드
import sys
input = sys.stdin.readline
move = {(-1,0), (-1,1), (0,1), (1,1), (1,0), (1,-1), (0,-1), (-1,-1)}
def bfs(MAP, x, y):
q = [(x,y)]
MAP[x][y] = -1
while q:
x,y = q.pop(0)
for tx, ty in move:
nx = x + tx
ny = y + ty
if 0<=nx<h and 0<=ny<w and MAP[nx][ny] == 1:
q.append((nx,ny))
MAP[nx][ny] = -1 # visited
while True:
w,h = map(int,input().split())
if w==0 and h == 0:
break
MAP = [list(map(int,input().split())) for _ in range(h)]
cnt = 0
for i in range(h):
for j in range(w):
if MAP[i][j] == 1:
bfs(MAP, i, j)
cnt += 1
print(cnt)
반응형
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[boj] 백준 17836 공주님을 구해라! python 풀이 (0) | 2023.06.09 |
---|---|
[boj] 백준 14405 피카츄 python 풀이 (0) | 2023.06.01 |
[boj] 백준 2573 빙산 python 풀이 (1) | 2023.05.12 |
[boj] 백준 2775 부녀회장이 될테야 python 풀이 (0) | 2023.05.11 |
[boj] 백준 2209 조짜기 python 풀이 (0) | 2023.05.11 |