[๋ฐฑ์ค€-2630] ์ƒ‰์ข…์ด ๋งŒ๋“ค๊ธฐ / Python

๐Ÿ“š Problem Solving/Baekjoon

 

2630๋ฒˆ: ์ƒ‰์ข…์ด ๋งŒ๋“ค๊ธฐ

์ฒซ์งธ ์ค„์—๋Š” ์ „์ฒด ์ข…์ด์˜ ํ•œ ๋ณ€์˜ ๊ธธ์ด N์ด ์ฃผ์–ด์ ธ ์žˆ๋‹ค. N์€ 2, 4, 8, 16, 32, 64, 128 ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์ƒ‰์ข…์ด์˜ ๊ฐ ๊ฐ€๋กœ์ค„์˜ ์ •์‚ฌ๊ฐํ˜•์นธ๋“ค์˜ ์ƒ‰์ด ์œ—์ค„๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ค„๊นŒ์ง€ ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

import sys

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


def divide(n, x, y):
    global white, blue
    check = paper[x][y]
    for i in range(x, x + n):
        for j in range(y, y + n):
            if check != paper[i][j]:
                divide(n // 2, x, y)
                divide(n // 2, x, y + n // 2)
                divide(n // 2, x + n // 2, y)
                divide(n // 2, x + n // 2, y + n // 2)
                return
    if check == 0:
        white += 1
    else:
        blue += 1


divide(n, 0, 0)
print(white)
print(blue)

 

ํ•ด์„ค

์–ด์ œ ํ’€์—ˆ๋˜ ์žฌ๊ท€ ๋ฌธ์ œ์™€ ๋น„์Šทํ•œ ์œ ํ˜•! ์ด์ œ ์–ด๋Š์ •๋„ ๋Šฅ์ˆ™ํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค..๐Ÿ˜„