반응형
문제
https://www.acmicpc.net/problem/14716
문제 풀이
가장 큰 섬을 찾는 bfs문제 응용
코드
import sys
input = sys.stdin.readline
import collections
M, N = map(int,input().split())
MAP = [list(map(int,input().split())) for _ in range(M)]
visited = [[0 for _ in range(N)] for _ in range(M)]
def bfs(MAP, sx, sy):
q = collections.deque()
q.append((sx,sy))
while q:
cx, cy = q.popleft()
for tx, ty in [(-1,0),(0,1),(1,0),(0,-1),(1,1),(-1,-1),(1,-1),(-1,1)]:
nx = cx + tx
ny = cy + ty
if 0<=nx<M and 0<=ny<N and MAP[nx][ny] == 1:
q.append((nx,ny))
MAP[nx][ny] = -1
res = 0
for i in range(M):
for j in range(N):
if MAP[i][j] == 1:
bfs(MAP, i, j)
res += 1
print(res)
반응형
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[boj] 백준 15666 N과 M (12) python 풀이 (0) | 2023.08.03 |
---|---|
[boj] 백준 2343 기타 레슨 python 풀이 (0) | 2023.07.31 |
[boj] 백준 13549 숨바꼭질 3 python 풀이(bfs) (0) | 2023.07.29 |
[boj] 백준 2583 영역 구하기 python 풀이(bfs) (0) | 2023.07.28 |
[boj] 백준 15650 N과 M (2) python 풀이 (0) | 2023.07.27 |