반응형
문제
https://www.acmicpc.net/problem/10026
코드
from collections import deque
def bfs(x, y):
q.append((x, y))
dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1]
visited[x][y] = 1
while q:
x, y = q.popleft()
for i in range(4):
nx = dx[i] + x
ny = dy[i] + y
if 0 <= nx < n and 0 <= ny < n and pic[nx][ny] == pic[x][y] and not visited[nx][ny]:
visited[nx][ny] = 1
q.append((nx, ny))
n = int(input())
pic = [list(input()) for _ in range(n)]
q = deque()
visited = [[0] * n for _ in range(n)]
cnt_a = 0
for i in range(n):
for j in range(n):
if not visited[i][j]:
bfs(i, j)
cnt_a += 1
for i in range(n):
for j in range(n):
if pic[i][j] == 'G':
pic[i][j] = 'R'
visited = [[0] * n for _ in range(n)]
cnt_b = 0
for i in range(n):
for j in range(n):
if not visited[i][j]:
bfs(i, j)
cnt_b += 1
print(cnt_a, cnt_b)
설명
bfs로 접근해서 해결했다.
기본적인 세팅을 해주고,
체크를 해야 할 조건에 제일 초기의 입력값(RGB)과 비교하여 동일하고 방문하지 않은 좌표에 대해서만 처리하도록 했다.
그리고 적록색약의 경우 간단하게 접근해서
기존에 주어진 초록색을 빨간색으로 변경해서 처리하는 방법을 사용했다.
BFS 설명: https://looancheong.tistory.com/138
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 15654: N과 M (5) (0) | 2023.07.14 |
---|---|
[파이썬, Python] 백준 1940: 주몽 (0) | 2023.07.13 |
[파이썬, Python] 백준 11000: 강의실 배정 (0) | 2023.07.11 |
[파이썬, Python] 백준 1149: RGB거리 (0) | 2023.07.10 |
[파이썬, Python] 백준 3986: 좋은 단어 (0) | 2023.07.07 |