본문 바로가기

boj

백준10026적록색약

https://www.acmicpc.net/problem/10026

 

10026번: 적록색약

적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록)

www.acmicpc.net

dfs를 두번수행한다.

처음엔 색깔을 다 따로,

다음엔 초록,빨강을 묶어서

import sys
from collections import deque
import copy
input=sys.stdin.readline
move=((-1,0),(1,0),(0,-1),(0,1))

def bfs1(i,j,color,arr):
    que=deque()
    que.append((i,j))
    arr[i][j]=-1

    while que:
        i,j=que.popleft()

        for a,b in move:
            ti,tj=i+a,j+b
            if 0<=ti<n and 0<=tj<n and arr[ti][tj]==color:
                arr[ti][tj]=-1
                que.append((ti,tj))



n=int(input())
graph=[list(input().strip())for _ in range(n)]
arr=copy.deepcopy(graph)
arr1=copy.deepcopy(graph)
for i in range(n):
    for j in range(n):
        if arr1[i][j] in ('R','G'):
            arr1[i][j]='R'
answer0=0
answer1=0
for i in range(n):
    for j in range(n):
        if arr[i][j]!=-1:
            bfs1(i,j,arr[i][j],arr)
            answer0+=1
        if arr1[i][j]!=-1:
            bfs1(i,j,arr1[i][j],arr1)
            answer1+=1
print(answer0,answer1)

'boj' 카테고리의 다른 글

11659 구간합 구하기 4  (0) 2022.07.05
백준 9935 문자열 폭팔  (0) 2022.05.20
백준1062 가르침  (0) 2022.05.18
백준 16928 뱀과 사다리 게임  (0) 2022.05.16
백준 1987 알파벳  (0) 2022.05.15