당신의 병사의 위력의 합과 적국의 병사의 위력의 합을 출력하기.
입력 | 출력 |
---|---|
5 5 WBWWW WWWWW BBBBB BBBWW WWWWW | 130 65 |
: bfs로 상하좌우를 탐색하여 몇개가 연결되어있는지를 리턴한다.
from collections import deque
n, m = map(int, input().split()) #m행n열
sol = [list(input()) for _ in range(m)]
visited = [[0]*n for _ in range(m)]
def bfs(x, y, visited, sol, v):
q = deque()
q.append((x, y))
cnt = 1
visited[x][y] = 1
dx = [-1,1,0,0]
dy = [0,0,-1,1]
while q:
x, y = q.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0<=nx<m and 0<=ny<n:
if visited[nx][ny] == 0 and sol[nx][ny] == v:
cnt += 1
visited[nx][ny] = 1
q.append((nx, ny))
return cnt
sum_w, sum_b = 0, 0
for i in range(m):
for j in range(n):
if sol[i][j] == 'W' and visited[i][j] == 0:
sum_w += pow(bfs(i,j,visited,sol,'W'), 2)
elif sol[i][j] == 'B' and visited[i][j] == 0:
sum_b += pow(bfs(i,j,visited,sol,'B'), 2)
print(sum_w, sum_b)