반응형
https://www.acmicpc.net/problem/10026
10026번: 적록색약
적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록)
www.acmicpc.net

답안
import sys sys.setrecursionlimit(10**4) def dfs_R(x,y): if x < 0 or y < 0 or x >= n or y >= n: return False if graph[x][y] == 'R': graph[x][y] = 'C' dfs_R(x-1,y) dfs_R(x,y-1) dfs_R(x+1,y) dfs_R(x,y+1) return True return False def dfs_G(x,y): if x < 0 or y < 0 or x >= n or y >= n: return False if graph[x][y] == 'G': graph[x][y] = 'C' dfs_G(x-1,y) dfs_G(x,y-1) dfs_G(x+1,y) dfs_G(x,y+1) return True return False def dfs_B(x,y): if x < 0 or y < 0 or x >= n or y >= n: return False if graph[x][y] == 'B': graph[x][y] = 'C' dfs_B(x-1,y) dfs_B(x,y-1) dfs_B(x+1,y) dfs_B(x,y+1) return True return False def dfs_R_G(x,y): if x < 0 or y < 0 or x >= n or y >= n: return False if graph2[x][y] == 'R' or graph2[x][y] == 'G': graph2[x][y] = 'C' dfs_R_G(x-1,y) dfs_R_G(x,y-1) dfs_R_G(x+1,y) dfs_R_G(x,y+1) return True return False def dfs_B2(x,y): if x < 0 or y < 0 or x >= n or y >= n: return False if graph2[x][y] == 'B': graph2[x][y] = 'C' dfs_B2(x-1,y) dfs_B2(x,y-1) dfs_B2(x+1,y) dfs_B2(x,y+1) return True return False result = 0 n = int(input()) graph = [] graph2 = [] for _ in range(n): k = input() graph.append(list(k)) graph2.append(list(k)) #RGB for i in range(n): for j in range(n): if dfs_R(i,j): result += 1 for i in range(n): for j in range(n): if dfs_G(i,j): result += 1 for i in range(n): for j in range(n): if dfs_B(i,j): result += 1 print(result, end = ' ') result = 0 #RRB for i in range(n): for j in range(n): if dfs_R_G(i,j): result += 1 for i in range(n): for j in range(n): if dfs_B2(i,j): result += 1 print(result)
좀 길어 보이지만 반복된 게 많이 쓰였기 때문에 간단한 코드이다.
그래프를 2개 만들어서 앞 케이스, 뒤 케이스 따로따로 탐색을 진행하였다.
탐색하는 각 단어별로 DFS를 해주었고, 탐색이 끝난 위치는 'C'로 변경해 주었다.
좀 무지성으로 한 것 같긴 한데.. 시간이 없어서 아는 대로만 쉽게 짰다!

반응형
'BOJ > Python' 카테고리의 다른 글
백준 10815번 숫자 카드 파이썬 (0) | 2022.02.14 |
---|---|
백준 2609번 최대공약수와 최소공배수 파이썬 (0) | 2022.02.11 |
백준 10989번 수 정렬하기 3 파이썬 (0) | 2022.02.09 |
백준 1929번 소수 구하기 파이썬 (0) | 2022.02.08 |
백준 4963번 섬의 개수 파이썬 DFS (0) | 2022.02.07 |