πŸ—οΈ Algorithm/🟩 λ°±μ€€

🟩 [λ°±μ€€] [Python] [κ΅¬ν˜„] 1780번_μ’…μ΄μ˜ 개수

Dbswnstjd 2022. 11. 4. 18:29

문제

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

 

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

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

www.acmicpc.net

풀이

# λ°±μ€€ 1780번 문제 - μ’…μ΄μ˜ 개수
n = int(input())
board = [list(map(int, input().split())) for _ in range(n)]

result_minus = 0
result_zero = 0
result_plus = 0

def dfs(x,y,n):
    global result_minus, result_zero, result_plus

    num_check = board[x][y]
    for i in range(x, x+n):
        for j in range(y, y+n):
            if (board[i][j] != num_check):
                for k in range(3):
                    for l in range(3):
                        dfs(x + k*n // 3, y + l*n // 3, n // 3)
                return
    if num_check == -1:
        result_minus += 1
    elif num_check == 0:
        result_zero += 1
    else:
        result_plus += 1

dfs(0,0,n)
print(f'{result_minus}\n{result_zero}\n{result_plus}')