티스토리 뷰

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로 바꿔서 영역 개수를 구하면된다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31