[λ°±μ€€-1780] μ’…μ΄μ˜ 개수 / Python

πŸ“š Problem Solving/Baekjoon

 

1780번: μ’…μ΄μ˜ 개수

N×N크기의 ν–‰λ ¬λ‘œ ν‘œν˜„λ˜λŠ” 쒅이가 μžˆλ‹€. μ’…μ΄μ˜ 각 μΉΈμ—λŠ” -1, 0, 1의 μ„Έ κ°’ 쀑 ν•˜λ‚˜κ°€ μ €μž₯λ˜μ–΄ μžˆλ‹€. μš°λ¦¬λŠ” 이 행렬을 μ μ ˆν•œ 크기둜 자λ₯΄λ €κ³  ν•˜λŠ”λ°, μ΄λ•Œ λ‹€μŒμ˜ κ·œμΉ™μ— 따라 자λ₯΄λ €κ³  ν•œλ‹€.

www.acmicpc.net

import sys

n = int(sys.stdin.readline())
paper = [list(map(int, sys.stdin.readline().split())) for _ in range(n)]
minusOne, zero, one = 0, 0, 0


def divide(n, x, y):
    global minusOne, zero, one

    num = paper[x][y]
    for i in range(x, x + n):
        for j in range(y, y + n):
            if num != paper[i][j]:
                for k in range(3):
                    for l in range(3):
                        divide(n // 3, x + k * n // 3, y + l * n // 3)
                return
    if num == -1:
        minusOne += 1
    elif num == 0:
        zero += 1
    else:
        one += 1


divide(n, 0, 0)
print(minusOne)
print(zero)
print(one)

 

ν•΄μ„€

였늘 ν’€μ—ˆλ˜ μž¬κ·€ λ¬Έμ œμ™€ λΉ„μŠ·ν•œ μœ ν˜•μ΄λ‹€.

μ‚¬κ°ν˜•μ„ 9개 μ”© μͺΌκ°œλ©΄μ„œ νƒμƒ‰ν•˜λ©΄ μ™„λ£Œ!

아직 μž¬κ·€ 문제λ₯Ό ν‘ΈλŠ”λ° μ‘°κΈˆμ”© 어렀움을 λŠλ‚€λ‹€..πŸ˜‚