반응형
문제
https://www.acmicpc.net/problem/1743
문제 풀이
가장 큰 섬을 찾는 bfs 문제
코드
import sys
input = sys.stdin.readline
import collections
N, M, K = map(int, input().split())
MAP = [[0 for _ in range(M)] for _ in range(N)]
for i in range(K):
r, c = map(int,input().split())
MAP[r-1][c-1] = 1 # 음식물
def bfs(x,y,MAP):
move = {(-1,0),(0,1),(1,0),(0,-1)}
q = collections.deque()
q.append((x,y))
MAP[x][y] = -1 # visited
cnt = 1
while q:
cx, cy = q.popleft()
for tx, ty in move:
nx = tx + cx
ny = ty + cy
if 0<=nx<N and 0<=ny<M and MAP[nx][ny] == 1:
q.append((nx, ny))
MAP[nx][ny] = -1
cnt += 1
return cnt
MAX = 0
for i in range(N):
for j in range(M):
if MAP[i][j] == 1:
island_area = bfs(i,j,MAP)
MAX = max(island_area, MAX)
print(MAX)
반응형
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[boj] 백준 2792 보석 상자 python 풀이 (0) | 2023.09.07 |
---|---|
[boj] 백준 14940 쉬운 최단거리 python 풀이 (0) | 2023.08.29 |
[boj] 백준 9461 파도반 수열 python 풀이 (0) | 2023.08.19 |
[boj] 백준 12099 점심메뉴 python 풀이 (0) | 2023.08.19 |
[boj] 백준 15665 N과 M (11) python 풀이 (0) | 2023.08.16 |