import sys
sys.setrecursionlimit(100000)
input = sys.stdin.readline
n = int(input())
##방문 했는지 안 했는지 구별
visited = [[False] * n for _ in range(n)]
##입력값 matrix 만들기
matrix = [list(input().rstrip()) for _ in range(n)]
##dfs 함수 만들기
def dfs(x, y):
cur_color = matrix[x][y]
visited[x][y] = True
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx <= n - 1 and 0 <= ny <= n - 1 and visited[nx][ny] == False:
if cur_color == matrix[nx][ny]:
dfs(nx, ny)
three = 0
##적록색약 아닐 때
for i in range(n):
for j in range(n):
if visited[i][j] == False:
dfs(i, j)
three += 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)]
two = 0
##적록색약 일 때
for i in range(n):
for j in range(n):
if visited[i][j] == False:
dfs(i, j)
two += 1
print(three, two)
sys.setrecursionlimit(100000)
이 부분 없이 계속 런타임 에러 뜨길래
구글에 검색 해보니
저 코드를 재귀 함수 일 때는 필수적으로 넣어야 된다고 합니다
'알고리즘' 카테고리의 다른 글
[백준] 9019번 (python 파이썬) (0) | 2022.08.21 |
---|---|
[백준] 16928번(python 파이썬) (0) | 2022.08.18 |
[백준] 11403번 (python 파이썬)(플로이드 와샬) (0) | 2022.07.31 |
[백준] 11286번 (python 파이썬) (0) | 2022.07.24 |
[백준] 17626번 (python 파이썬) (0) | 2022.07.11 |