색맹
- 문제 유형 : DFS
- 사용언어 : Python
- 난이도 : 실버 1
- 출처 : 코드 트리
def dfs(grid, visited, x, y, n):
stack = [(x, y)]
size = 0
color = grid[x][y]
while stack:
cx, cy = stack.pop()
if visited[cx][cy]:
continue
visited[cx][cy] = True
size += 1
for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]:
nx, ny = cx + dx, cy + dy
if 0 <= nx < n and 0 <= ny < n and not visited[nx][ny] and grid[nx][ny] == color:
stack.append((nx, ny))
return size
# 입력 받기
n = int(input())
area = [list(input()) for _ in range(n)]
color_blind_area = [row[:] for row in area] # 격자 복사
# 적록색약용 격자 변환
for i in range(n):
for j in range(n):
if color_blind_area[i][j] == 'G':
color_blind_area[i][j] = 'R'
# 일반적인 탐색과 적록색약 탐색
visited = [[False]*n for _ in range(n)]
visited_cb = [[False]*n for _ in range(n)]
normal_zones = 0
color_blind_zones = 0
for i in range(n):
for j in range(n):
if not visited[i][j]:
dfs(area, visited, i, j, n)
normal_zones += 1
if not visited_cb[i][j]:
dfs(color_blind_area, visited_cb, i, j, n)
color_blind_zones += 1
print(normal_zones, color_blind_zones)
반응형
'Programming Test > 문제풀이' 카테고리의 다른 글
[문제 풀이 24] 코드 트리 - n x n 표에서의 분배 (0) | 2024.04.23 |
---|---|
[문제 풀이 23] 코드 트리 - n x m 표 이동 5 (0) | 2024.04.23 |
[문제 풀이 21] 프로그래머스 - 완주하지 못한 선수 (0) | 2024.04.20 |
[문제 풀이 20] 코드 트리 - 연결된 칸 찾기 (0) | 2024.04.19 |
[문제 풀이 19] 코드 트리 - 구역마다 다른 드랍 아이템 (0) | 2024.04.18 |