- 문제 : 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"])
'백준 > Search' 카테고리의 다른 글
[dfs/백준] 1103번 : 게임 (0) | 2022.08.10 |
---|---|
[bfs/백준] 3584번 : 가장 가까운 공통 조상 (0) | 2022.08.10 |
[bfs/백준] 18352번 : 특정 거리의 도시 찾기 (0) | 2022.08.09 |
[bfs/백준] 16946번 : 벽 부수고 이동하기 4 (itr) (0) | 2022.08.09 |
[dfs/백준] 1405번 : 미친 로봇 (0) | 2022.08.09 |