
from collections import deque
import sys
n = int(sys.stdin.readline())
graph = [list(sys.stdin.readline().rstrip()) for _ in range(n)]
dx = [0,0,-1,1]
dy = [1,-1,0,0]
def bfs(i,j,isBlindness,prev):
queue = deque()
queue.append((i,j))
visited[i][j] = True
while queue:
x, y = queue.popleft()
for i in range(4):
nx = dx[i] + x
ny = dy[i] + y
if 0 <= nx < n and 0 <= ny < n:
if isBlindness: # 적록색약이면
if not visited[nx][ny]:
if graph[nx][ny] == prev or (prev == 'G' and graph[nx][ny] == 'R') or (prev == 'R' and graph[nx][ny] == 'G'):
visited[nx][ny] = True
queue.append((nx, ny))
else: # 적록색약이 아니면
if not visited[nx][ny] and graph[nx][ny] == prev:
visited[nx][ny] = True
queue.append((nx,ny))
visited = [[False] * n for _ in range(n)]
result = [0,0]
# 적록색약 아님
for i in range(n):
for j in range(n):
if not visited[i][j]:
prev = graph[i][j]
bfs(i, j, False, prev)
result[0] += 1
# 적록색약
visited = [[False] * n for _ in range(n)]
for i in range(n):
for j in range(n):
if not visited[i][j]:
prev = graph[i][j]
bfs(i, j, True, prev)
result[1] += 1
print(result[0], end=' ')
print(result[1])
적록색약 아닌 경우
전에 탐색했던 값과 다음으로 탐색할 값이 같으면 deque에 넣고 계속 방문
적록색약인 경우
R과 G가 같은 경우로 보고 탐색이 되어야한다
전에 탐색했던 값(prev)과 다음으로 탐색할 값(next)이 같거나
prev가 G인데 next가 R인 경우
prev가 R인데 next가 G인 경우
같은 것으로 처리하여 계속 방문할 수 있도록 해주었습니다
