🎈 처음에 sys.sys.setrecursionlimit(10000000) 설정해주지 않아 런타임에러가 걸렸다.
🎈 예제나 다른 복잡한 반례를 넣어봤을 때는 다 맞았는데, 제출하자마자 바로 틀렸다고 해서 처음에 조금 헤맸다.
- > 원인을 찾아보니 for 문에서 iterator 반환 변수와 변수를 혼용해서 썼다..
이런 기초적인 것들(?) 혹은 오타 때문에 생기는 오류들 때문에 때로는 문제푸는데 필요없이 오래걸리곤 한다... ㅠ
다신 까먹지 말자...ㅎㅎ
혹시 필요한 분들을 위해.. 제 오류를 찾은 반례도 함께 남겨 놓겠습니다.(제가 반례찾는다고 엄청 헤맸거든요..ㅠ)
2
BR
GB
3 2
💻 딕셔너리를 사용해서 적록색약이 보는 R, G의 값은 동일하게, 일반 사람이 보는 R, G의 값을 다르게 설정했다.
확실히 딕셔너리를 사용해 컬러의 값을 나타내니 눈에 잘 들어온다.
import sys
import copy
sys.setrecursionlimit(100000000)
def color_segment():
stack = []
arr = copy.deepcopy(array)
cnt = 0
for i in range(N):
for j in range(N):
if arr[i][j] in color:
cnt += 1
color_num = color[arr[i][j]]
arr[i][j] = color_num
stack.append((i, j))
while stack:
r, c = stack.pop()
for k in range(4):
nr = r + delta[k][0]
nc = c + delta[k][1]
if 0 <= nr < N and 0 <= nc < N:
if arr[nr][nc] in color and color[arr[nr][nc]] == color_num:
arr[nr][nc] = color_num
stack.append((nr, nc))
return cnt
delta = [(1, 0), (-1, 0), (0, 1), (0, -1)]
N = int(input())
array = []
for _ in range(N):
array.append(list(input()))
color = {'R': 0, 'G':1, 'B':2 }
normal = color_segment()
color = {'R': 0, 'G':0, 'B':2 }
color_blindness = color_segment()
print(normal, color_blindness)
'알고리즘 문제 풀기 > 백준(Baekjoon)' 카테고리의 다른 글
[백준 알고리즘] 15650. N과 M (2) - 조합 (0) | 2021.03.20 |
---|---|
[백준 알고리즘] 15649. N과 M (1) - 순열 (0) | 2021.03.20 |
[백준 알고리즘] 1012 유기농배추 _ 파이썬, dfs (0) | 2021.03.08 |
[백준 알고리즘] 1244. 스위치 켜고 끄기 - 파이썬 (0) | 2021.02.27 |
[백준 알고리즘] 1018번 체스판 다시 칠하기 - 브루트포스, 파이썬 (0) | 2021.02.21 |