JH 개발 블로그
백준 파이썬 1780 종이의 개수 본문
https://www.acmicpc.net/problem/1780
코드
import sys
input = sys.stdin.readline
def cut_paper(r,c,n):
num = paper[r][c]
for i in range(r,r+n):
for j in range(c,c+n):
if paper[i][j] != num:
for k in range(3):
for l in range(3):
cut_paper(r+k*(n//3),c+l*(n//3),n//3)
return
if num == -1:
ans[0] += 1
elif num == 0:
ans[1] += 1
else:
ans[2] += 1
n = int(input())
paper = [list(map(int,input().split())) for _ in range(n)]
ans = [0,0,0]
cut_paper(0,0,n)
print(*ans,sep='\n')
예를들어 n=9면, 좌표 [0,0]에서 오른쪽으로 [8,8]까지 검사를 진행하는데, 중간에 값이 num과 다르다면 종이를 9등분한다.
cut_paper 함수를 좌표 [0,3],[0,6],[3,0]...[6,6]순으로 실행한다.
만약 종이의 숫자가 모두 같다면, 정답에 1을 더해준다.
'코딩테스트 > 백준' 카테고리의 다른 글
백준 1201 파이썬 NMK (0) | 2021.12.31 |
---|---|
백준 파이썬 1074 Z (0) | 2021.12.31 |
백준 파이썬 2263 트리의 순회 (0) | 2021.12.30 |
백준 파이썬 1991 트리 순회 (0) | 2021.12.30 |
백준 파이썬 11729 하노이 탑 이동 순서 (0) | 2021.12.29 |
Comments