코드
import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline
n = int(input())
area = [list(input().rstrip()) for _ in range(n)]
visited_1 = [[False] * n for _ in range(n)]
visited_2 = [[False] * n for _ in range(n)]
rgb = ["R", "G", "B"]
rb = ["R", "B"]
def dfs(x, y, space, check, color):
if (0 <= x < n) and (0 <= y < n) and (not check[x][y]) and space[x][y] == color:
check[x][y] = True
dfs(x+1, y, space, check, color)
dfs(x-1, y, space, check, color)
dfs(x, y+1, space, check, color)
dfs(x, y-1, space, check, color)
count_1 = 0
count_2 = 0
for i in range(n):
for j in range(n):
for k in rgb:
if area[i][j] == k and not visited_1[i][j]:
dfs(i, j, area, visited_1, k)
count_1 += 1
for i in range(n):
for j in range(n):
if area[i][j] == "G": area[i][j] = "R"
for i in range(n):
for j in range(n):
for k in rb:
if area[i][j] == k and not visited_2[i][j]:
dfs(i, j, area, visited_2, k)
count_2 += 1
print(count_1, count_2)
G를 무시하고 R만 세면 될 거라는 착각을 해 틀렸던 문제.
2
RG
GR이 반례였다. 가볍게 생각하지 말고 논리적으로 접근하자. 이런 부분에서 놓치면 찾기도 어렵다...
'백준' 카테고리의 다른 글
[백준] 15810번 풍선 공장 파이썬 코드 (0) | 2023.09.16 |
---|---|
[백준] 20551번 Sort 마스터 배지훈의 후계자 파이썬 코드 (0) | 2023.09.15 |
[백준] 2667번 단지번호붙이기 파이썬 코드 (0) | 2023.09.14 |
[백준] 1012번 유기농 배추 파이썬 코드 (0) | 2023.09.14 |
[백준] 4963번 섬의 개수 파이썬 코드 (0) | 2023.09.14 |
코드
import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline
n = int(input())
area = [list(input().rstrip()) for _ in range(n)]
visited_1 = [[False] * n for _ in range(n)]
visited_2 = [[False] * n for _ in range(n)]
rgb = ["R", "G", "B"]
rb = ["R", "B"]
def dfs(x, y, space, check, color):
if (0 <= x < n) and (0 <= y < n) and (not check[x][y]) and space[x][y] == color:
check[x][y] = True
dfs(x+1, y, space, check, color)
dfs(x-1, y, space, check, color)
dfs(x, y+1, space, check, color)
dfs(x, y-1, space, check, color)
count_1 = 0
count_2 = 0
for i in range(n):
for j in range(n):
for k in rgb:
if area[i][j] == k and not visited_1[i][j]:
dfs(i, j, area, visited_1, k)
count_1 += 1
for i in range(n):
for j in range(n):
if area[i][j] == "G": area[i][j] = "R"
for i in range(n):
for j in range(n):
for k in rb:
if area[i][j] == k and not visited_2[i][j]:
dfs(i, j, area, visited_2, k)
count_2 += 1
print(count_1, count_2)
G를 무시하고 R만 세면 될 거라는 착각을 해 틀렸던 문제.
2
RG
GR이 반례였다. 가볍게 생각하지 말고 논리적으로 접근하자. 이런 부분에서 놓치면 찾기도 어렵다...
'백준' 카테고리의 다른 글
[백준] 15810번 풍선 공장 파이썬 코드 (0) | 2023.09.16 |
---|---|
[백준] 20551번 Sort 마스터 배지훈의 후계자 파이썬 코드 (0) | 2023.09.15 |
[백준] 2667번 단지번호붙이기 파이썬 코드 (0) | 2023.09.14 |
[백준] 1012번 유기농 배추 파이썬 코드 (0) | 2023.09.14 |
[백준] 4963번 섬의 개수 파이썬 코드 (0) | 2023.09.14 |