반응형
적록 색약일 때와 아닐 때의 MAP을 따로 생성하여 각각 bfs 돌려줌. 적록 색약일 경우에 R, G를 다 R로 저장해서 풀이함.
문제
https://www.acmicpc.net/problem/10026
풀이
import sys
input = sys.stdin.readline
from collections import deque
N = int(input().strip())
MAP = [list(str(input())) for _ in range(N)]
MAP_RG = []
for i in range(N):
tmp = []
for j in range(N):
if MAP[i][j] == 'G':
tmp.append('R') # 적록 색약은 한 색으로 보임
else:
tmp.append(MAP[i][j])
MAP_RG.append(tmp)
move = [(-1,0), (0,1), (1,0), (0,-1)]
def bfs(q, MAP, i, j):
q.append((i, j))
color = MAP[i][j]
MAP[i][j] = 0
while q:
x,y = q.popleft()
for tx, ty in move:
nx = x + tx
ny = y + ty
if 0<=nx<N and 0<=ny<N and MAP[nx][ny] == color:
MAP[nx][ny] = 0
q.append((nx,ny))
q = deque()
not_q = deque()
cnt, rg_cnt = 0, 0
for i in range(N):
for j in range(N):
if MAP[i][j] != 0:
bfs(q, MAP, i, j) # 적록색약
cnt += 1
if MAP_RG[i][j] != 0:
bfs(not_q, MAP_RG, i, j) # 색약 X
rg_cnt += 1
print(cnt, rg_cnt)
반응형
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[boj] 백준 1303 전쟁 - 전투 python 풀이 (0) | 2023.04.30 |
---|---|
[boj] 백준 1926 그림 python 풀이 (1) | 2023.04.30 |
[boj] 백준 25418 정수 a를 k로 만들기 python 풀이 (0) | 2023.04.16 |
[boj] 백준 1012 유기농 배추 python 풀이 (0) | 2023.04.16 |
[boj] 백준 5014 스타트링크 python 풀이 (0) | 2023.04.15 |