https://www.acmicpc.net/problem/1780
❗접근 방법
- 재귀로 범위를 좁히기
- 종료 조건은 정해진 범위 내에 같은 숫자만 있을 경우 → check함수로 분리
- 종료가 되지 않을 경우는 사이즈를 / 3하기
- 새롭게 나뉜 9개의 부분을 for문과 새로운 사이즈를 사용해서 재귀 호출
❗코드
import sys
input = sys.stdin.readline
n = int(input())
graph = []
for _ in range(n):
temp = list(map(int, input().rstrip().split(" ")))
graph.append(temp)
# -1로만, 0으로만, 1로만
result = [0, 0, 0]
def check(x, y, n):
standard = graph[x][y]
for i in range(x, x+n):
for j in range(y, y+n):
if graph[i][j] != standard:
return False
return True
def count(x, y, n):
standard = graph[x][y]
if check(x, y, n):
result[standard+1] += 1
return
nn = n // 3
for i in range(3):
for j in range(3):
count(x + i*nn, y +j*nn, nn)
count(0, 0, n)
for res in result:
print(res)
728x90
반응형
'🔻PS > Baekjoon' 카테고리의 다른 글
[Baekjoon] 백준 2533 사회망 서비스(SNS) Python (2) | 2024.09.16 |
---|---|
[Baekjoon] 백준 1043 거짓말 Python (1) | 2024.09.15 |
[Baekjoon] 백준 1149 RGB거리 Python (0) | 2024.09.13 |
[Baekjoon] 백준 26169 세 번 이내에 사과를 먹자 Python (0) | 2024.09.13 |
[Baekjoon] 백준 1941 소문난 칠공주 Python (0) | 2024.07.29 |