문제 링크: https://www.acmicpc.net/problem/10026
백준 알고리즘 중급 1/3 611에서 15번째 - 10026번 적록색약을 풀어보았다.
풀이: https://velog.io/@uoayop/BOJ-10026-%EC%A0%81%EB%A1%9D%EC%83%89%EC%95%BD-Python
C++
Python
import sys
sys.setrecursionlimit(1000000)
input = sys.stdin.readline
n = int(input().rstrip())
matrix = [list(input().rstrip()) for _ in range(n)]
visited = [[False] * n for _ in range(n)]
three_cnt, two_cnt = 0, 0
dx = [-1,1,0,0]
dy = [0,0,-1,1]
def dfs(x,y):
visited[x][y] = True
current_color = matrix[x][y]
for k in range(4):
nx = x + dx[k]
ny = y + dy[k]
if (0 <= nx < n) and (0 <= ny < n):
if visited[nx][ny]==False:
if matrix[nx][ny] == current_color:
dfs(nx,ny)
for i in range(n):
for j in range(n):
if visited[i][j]==False:
dfs(i,j)
three_cnt += 1
for i in range(n):
for j in range(n):
if matrix[i][j]=='R':
matrix[i][j]='G'
visited = [[False] * n for _ in range(n)]
for i in range(n):
for j in range(n):
if visited[i][j] == False:
dfs(i,j)
two_cnt += 1
print(three_cnt,two_cnt)
Java
'코테용 문제풀이 > 백준' 카테고리의 다른 글
동전 0 풀이 (0) | 2023.03.04 |
---|---|
4연산 풀이 (0) | 2023.03.04 |
소수 경로 풀이 (0) | 2023.03.01 |
레이저 통신 풀이 (0) | 2023.03.01 |
아기 상어 풀이 (0) | 2023.02.28 |