코딩 테스트/백준 강의 연습편
BFS) 10026.적록색약
Carnival7
2022. 6. 10. 20:58
https://www.acmicpc.net/problem/10026
10026번: 적록색약
적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록)
www.acmicpc.net
from collections import deque
n=int(input())
a=[list(list(input())) for _ in range(n)]
dx=[-1,1,0,0]
dy=[0,0,-1,1]
def can(blind,a,b):
if a==b:
return True
if blind:
if (a=='R' and b=='G') or (b=='R' and a=='G'):
return True
return False
def bfs(blind):
ans=0
check = [[False] * n for _ in range(n)]
for i in range(n):
for j in range(n):
if not check[i][j]:
q=deque()
q.append((i, j))
check[i][j]=True
c=a[i][j]
while q:
x,y=q.popleft()
for k in range(4):
nx,ny=x+dx[k],y+dy[k]
if 0<=nx<n and 0<=ny<n and not check[nx][ny]:
if can(blind,a[i][j],a[nx][ny]):
q.append((nx,ny))
check[nx][ny]=True
ans+=1
return ans
ans1=bfs(False)
ans2=bfs(True)
ans=[ans1,ans2]
print(*ans)