[백준] 10026번: 적록색약 문제 풀이 파이썬
문제 링크
https://www.acmicpc.net/problem/10026
풀이 방식
- bfs 방식으로 적록색맹이지 않은 사람의 영역 갯수를 구한다.
- visited 를 초기화한 후에 적록색맹의 영역 갯수를 구한다.
전체 코드
from collections import deque
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def bfs(i, j):
queue = deque([[i, j]])
visited[i][j] = 0
while queue:
x, y = queue.popleft()
for a in range(4):
nx = x + dx[a]
ny = y + dy[a]
if 0 <= nx < N and 0 <= ny < N and visited[nx][ny] and picture[nx][ny] == picture[i][j]:
queue.append([nx, ny])
visited[nx][ny] = 0
N = int(input())
picture = []
visited = [[1] * N for i in range(N)]
for _ in range(N):
picture.append(list(input()))
cntA = 0
for i in range(N):
for j in range(N):
if visited[i][j]:
bfs(i, j)
cntA += 1
for i in range(N):
for j in range(N):
if picture[i][j] == 'R':
picture[i][j] = 'G'
visited = [[1] * N for i in range(N)]
cntB = 0
for i in range(N):
for j in range(N):
if visited[i][j]:
bfs(i, j)
cntB += 1
print(cntA, cntB)
Author And Source
이 문제에 관하여([백준] 10026번: 적록색약 문제 풀이 파이썬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hyuntall/백준-10026번-적록색약-문제-풀이-파이썬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)