Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

JH 개발 블로그

백준 파이썬 1780 종이의 개수 본문

코딩테스트/백준

백준 파이썬 1780 종이의 개수

쿠우우훈 2021. 12. 29. 17:26

https://www.acmicpc.net/problem/1780

 

1780번: 종이의 개수

N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수

www.acmicpc.net

 

코드

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