728x90
    
    
  반응형
    
    
    
  문제

https://www.acmicpc.net/problem/10026
10026번: 적록색약
적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록)
www.acmicpc.net
코드
import collections
n = int(input())
graph = [list(input()) for _ in range(n)]
check = [[False]*n for _ in range(n)]
queue = collections.deque()
dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1]
count1=0
count2=0
def bfs(x,y):
    queue.append((x,y))
    while queue:
        x,y = queue.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if 0 <= nx < n and 0 <= ny < n:
                if graph[nx][ny] == graph[x][y] and check[nx][ny] == False:
                    check[nx][ny] = True
                    queue.append((nx,ny))
for x in range(n):
    for y in range(n):
        if check[x][y] == False:
            count1 += 1
            bfs(x,y)
            
for x in range(n):
    for y in range(n):
        if graph[x][y] == 'G':
            graph[x][y] = 'R'
check = [[False]*n for _ in range(n)]
for x in range(n):
    for y in range(n):
        if check[x][y] == False:
            count2 += 1
            bfs(x,y)
            
print(count1, count2)일반사람이 봤을때 R,G,B에 영역 개수를 구하고
적록색약인 사람이 봤을경우에는 G를 R로 바꿔서 영역 개수를 구하면된다.
반응형
    
    
    
  '알고리즘 > 백준' 카테고리의 다른 글
| [백준] 11403번, 경로 찾기 (Python) (0) | 2021.07.21 | 
|---|---|
| [백준] 15900번, 나무 탈출 (Python) (0) | 2021.07.21 | 
| [백준] 2583번, 영역 구하기 (Python) (0) | 2021.07.16 | 
| [백준] 4963번, 섬의 개수 (Python) (0) | 2021.07.15 | 
| [백준] 11057번, 오르막 수 (Python) (0) | 2021.07.14 |