• Home
  • About
    • JOOS photo

      JOOS

      Joos's blog

    • Learn More
    • Email
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

[백준] 1780번 : 종이의 개수 with python3

13 Nov 2018

Reading time ~1 minute

문제링크 : https://www.acmicpc.net/problem/1780

import sys
sys.setrecursionlimit(10**6)
read = lambda : sys.stdin.readline().strip()
cnt = [0]*3
# -1,0,1값을 cnt에 저장시킨다.
n = int(read())
matrix = [list(map(int, read().split())) for _ in range(n)]


def same(x, y, n):
    # x, y서부터 n각형의 정사각형이 있는지 확인 하는 것
    for i in range(x, x+n):
        for j in range(y, y+n):
            if matrix[x][y] != matrix[i][j]:
                return False
    return True


def solve(x, y, n):
    if same(x, y, n):
        cnt[matrix[x][y]+1] += 1
        # -1을 0 ~ 1을 2로
        return
    m = n//3
    for i in range(0, 3):
        for j in range(0, 3):
            # 3으로 나눈 것들로 점점 좁혀 나가는 것이다.
            solve(x+i*m, y+j*m, m)


solve(0, 0, n)
for i in cnt:
    print(i)


algorithm백준python Share Tweet +1