https://www.acmicpc.net/problem/1780
이 문제는 저번에 푼 2630번 색종이 문제와 매우 유사합니다!
종이를 4등분 > 9등분
색이 2개 > 3개
그래서 전에 쓴 코드를 아주 살짝 수정했습니다!
def paper(a, b, n):
global mone, zero, one
color = field[a][b]
for i in range(a, a+n):
for j in range(b, b+n):
if color != field[i][j]:
paper(a, b, n//3)
paper(a + n//3, b, n//3)
paper(a + 2 * n//3, b, n//3)
paper(a, b + n//3, n//3)
paper(a, b + 2 * n//3, n//3)
paper(a + n//3, b + n//3, n//3)
paper(a + 2* n//3, b + n//3, n//3)
paper(a + n//3, b + 2*n//3, n//3)
paper(a + 2* n//3, b + 2*n//3, n//3)
return
if color == 0:
zero += 1
elif color == 1:
one += 1
else:
mone += 1
global mone, zero, one
mone = 0
zero = 0
one = 0
n = int(input())
field = [list(map(int,input().split())) for _ in range(n)]
paper(0, 0, n)
print(mone)
print(zero)
print(one)
좀 더 자세한 풀이를 알고싶다면 여기를 참고해주세요
https://usagi-coding.tistory.com/3
'PS > 재귀' 카테고리의 다른 글
[백준] 1991번: 트리순회 파이썬 (3) | 2024.02.28 |
---|---|
[백준] 2448번: 별 찍기 - 11 파이썬 (2) | 2024.02.28 |
[백준] 1992번: 쿼드트리 파이썬 (0) | 2024.02.28 |
[백준] 2630번: 색종이 만들기 파이썬 (0) | 2024.02.27 |