반응형
bfs로 풀이함
문제
https://www.acmicpc.net/problem/1303
코드
import sys
input = sys.stdin.readline
import collections
N, M = map(int,input().split())
MAP = [list(input()) for _ in range(M)]
move = {(-1,0),(0,1),(1,0),(0,-1)}
def bfs(x,y,MAP,color):
q = collections.deque()
q.append((x,y))
MAP[x][y] = 'Z'
cnt = 1
while q:
x,y = q.popleft()
for tx,ty in move:
nx = tx + x
ny = ty + y
if 0<=nx<M and 0<=ny<N and MAP[nx][ny] != 'Z' and MAP[nx][ny] == color:
q.append((nx,ny))
MAP[nx][ny] = 'Z' #visited
cnt += 1
return cnt
Blue, White = 0, 0
for i in range(M):
for j in range(N):
if MAP[i][j] == 'W':
White += bfs(i,j,MAP,'W')**2
elif MAP[i][j] == 'B':
Blue += bfs(i,j,MAP,'B')**2
print(White, Blue)
반응형
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[boj] 백준 25601 자바의 형변환 python 풀이 (0) | 2023.05.05 |
---|---|
[boj] 백준 14890 경사로 python 풀이 (0) | 2023.05.04 |
[boj] 백준 1926 그림 python 풀이 (1) | 2023.04.30 |
[boj] 백준 10026 적록색약 python 풀이 (0) | 2023.04.19 |
[boj] 백준 25418 정수 a를 k로 만들기 python 풀이 (0) | 2023.04.16 |