2차원 배열에서 0은 빈공간, 1은 벽
얼음 개수를 구하는거라 0으로 구성된 묶음이 총 몇 개인지 구하면 됨
BFS의 전통적인 문제로... 전설의 문제 '그림'과 같은 형태
from collections import deque
n,m = map(int,input().split())
a = [list(map(int,input().strip())) for _ in range(n)]
visited = [[False for _ in range(m)] for _ in range(n)]
dx=[0,0,1,-1]
dy=[1,-1,0,0]
def bfs(i,j):
q = deque()
q.append([i,j])
visited[i][j]=True
while q:
cur = q.popleft()
for k in range(4):
ax = cur[1]+dx[k]
ay = cur[0]+dy[k]
if 0<=ax<m and 0<=ay<n and not visited[ay][ax] and a[ay][ax]==0:
visited[ay][ax]=True
q.append([ay,ax])
cnt=0
for i in range(n):
for j in range(m):
if a[i][j]==0 and not visited[i][j]:
bfs(i,j)
cnt+=1
print(cnt)
2중 FOR문 돌면서 배열 내 원소들 다 훑어보는데,
현재 원소가 0이면서 방문한 적 없는 경우에만 탐색 시작함
bfs에 들어가면 시작점에서 출발해서 0으로 구성된 상하좌우 원소를 전부 다 탐색하고
더이상 탐색할 q가 없으면 종료
'개발자 강화 > 코딩 테스트' 카테고리의 다른 글
[백준] 14719 빗물 / 구현 / Python 골5 (0) | 2024.11.23 |
---|---|
[백준] 회전초밥 / Python 실1 (0) | 2024.11.22 |
[이취코] DP 실전 - 못생긴 수 / Python (0) | 2024.11.21 |
[백준/이취코] 정수삼각형 1932 / DP / Python 실1 (0) | 2024.11.21 |
[백준] 1520 내리막길 / DP / Python / 골3 (0) | 2024.11.21 |