백준/Search
[bfs/백준] 1303번 : 전쟁 - 전투
ydin
2022. 8. 10. 19:16
- 문제 : https://www.acmicpc.net/problem/18352
스스로 푼 문제이고, Silver Level 1 문제이다
W인 지역의 원소 갯수를 구한다음 그것의 제곱값을 answer 딕셔너리의 "W" key의 값에 누적한다
B인 지역도 마찬가지로 진행하면 된다
- 정답 풀이 :
from collections import deque
n,m = map(int,input().split())
data=[list(input()) for _ in range(m)]
visit = [[0] * n for _ in range(m)]
answer = {"W" : 0 , "B" : 0}
#방문하지 않은 흰색일 때 진행
#방문하지 않은 파란색일 때 진행
def bfs(x,y,letter):
queue=deque()
queue.append((x,y))
visit[x][y] = 1
count = 1
while queue:
x,y = queue.popleft()
for i in range(4):
nx,ny = x + dx[i], y + dy[i]
if 0 <= nx < m and 0 <= ny < n:
if not visit[nx][ny] and data[nx][ny] == letter :
count += 1
visit[nx][ny] = 1
queue.append((nx,ny))
answer[letter] += count*count
dx = [-1,1,0,0]
dy = [0,0,-1,1]
for i in range(m):
for j in range(n):
if not visit[i][j]:
bfs(i,j,data[i][j])
print(answer["W"],answer["B"])