Hikenny25
10026 - 적록색약 본문
https://www.acmicpc.net/problem/10026
10026번: 적록색약
적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록)
www.acmicpc.net
- 그래프 탐색
import sys
sys.setrecursionlimit(int(1e9))
input = sys.stdin.readline
def dfs(r, c):
v = data[r][c]
data[r][c] = 'N'
for i, j in delta:
dr = r + i
dc = c + j
if 0 <= dr < n and 0 <= dc < n and v == data[dr][dc]:
dfs(dr, dc)
def dfs2(r, c):
v = data2[r][c]
data2[r][c] = 'N'
for i, j in delta:
dr = r + i
dc = c + j
if 0 <= dr < n and 0 <= dc < n and v == data2[dr][dc]:
dfs2(dr, dc)
n = int(input())
data = [list(input().rstrip()) for _ in range(n)]
data2 = list()
for i in range(n):
arr = list()
for j in range(n):
if data[i][j] == 'G':
arr.append('R')
else:
arr.append(data[i][j])
data2.append(arr)
delta = [[1,0],[-1,0],[0,1],[0,-1]]
cnt, cnt2 = 0, 0
for i in range(n):
for j in range(n):
if data[i][j] != 'N':
dfs(i, j)
cnt += 1
if data2[i][j] != 'N':
dfs2(i, j)
cnt2 += 1
print(cnt, cnt2)
DFS로 구현했다
그냥 DFS 할 때마다 한 번씩 카운팅해주면 되는 문제
두 번만 하면 됨
'baekjoon (solved.ac) > class 3 Solve' 카테고리의 다른 글
1107 - 리모컨 (0) | 2023.12.09 |
---|---|
5430 - AC (0) | 2022.11.04 |
7569 - 토마토 (0) | 2022.11.01 |
7576 - 토마토 (1) | 2022.11.01 |
5525 - IOIOI (2) | 2022.10.31 |