반응형
대표적인 섬 찾기 bfs 문제. MAP 자체에 visited를 2 표시해서 풀이함. 0으로 표시할걸.. 생각이 짧았다
문제
https://www.acmicpc.net/problem/1012
풀이
import sys
import collections
input = sys.stdin.readline
move = [(-1,0),(0,1),(1,0),(0,-1)]
def bfs(i,j,MAP):
q = collections.deque()
q.append((i,j))
MAP[i][j] = 2 #visited
while q:
x,y = q.popleft()
for tx,ty in move:
nx = x + tx
ny = y + ty
if 0<=nx<N and 0<=ny<M and MAP[nx][ny] == 1:
q.append((nx,ny))
MAP[nx][ny] = 2 # visited
def find_island(MAP):
cnt = 0
for i in range(N):
for j in range(M):
if MAP[i][j] == 1:
bfs(i,j,MAP)
cnt += 1
return cnt
T = int(input().strip())
for _ in range(T):
M, N, K = map(int,input().split())
MAP = [[0 for _ in range(M)] for _ in range(N)]
for _ in range(K):
X,Y = map(int,input().split())
MAP[Y][X] = 1
print(find_island(MAP))
반응형
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[boj] 백준 10026 적록색약 python 풀이 (0) | 2023.04.19 |
---|---|
[boj] 백준 25418 정수 a를 k로 만들기 python 풀이 (0) | 2023.04.16 |
[boj] 백준 5014 스타트링크 python 풀이 (0) | 2023.04.15 |
[boj] 백준 15988 1, 2, 3 더하기3 python 풀이 (0) | 2023.04.12 |
[boj] 백준 2065 나룻배 python 풀이 (0) | 2023.04.12 |