[๋ฐฑ์ค€-1992] ์ฟผ๋“œํŠธ๋ฆฌ / Python

๐Ÿ“š Problem Solving/Baekjoon

 

1992๋ฒˆ: ์ฟผ๋“œํŠธ๋ฆฌ

์ฒซ์งธ ์ค„์—๋Š” ์˜์ƒ์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž N ์ด ์ฃผ์–ด์ง„๋‹ค. N ์€ ์–ธ์ œ๋‚˜ 2์˜ ์ œ๊ณฑ์ˆ˜๋กœ ์ฃผ์–ด์ง€๋ฉฐ, 1 ≤ N ≤ 64์˜ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง„๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ๋Š” ๊ธธ์ด N์˜ ๋ฌธ์ž์—ด์ด N๊ฐœ ๋“ค์–ด์˜จ๋‹ค. ๊ฐ ๋ฌธ์ž์—ด์€ 0 ๋˜

www.acmicpc.net

import sys

n = int(sys.stdin.readline())
data = [list(map(int, sys.stdin.readline().strip())) for _ in range(n)]


def quadtree(n, x, y):
    check = data[x][y]
    for i in range(x, x + n):
        for j in range(y, y + n):
            if check != data[i][j]:
                print("(", end="")
                quadtree(n // 2, x, y)
                quadtree(n // 2, x, y + n // 2)
                quadtree(n // 2, x + n // 2, y)
                quadtree(n // 2, x + n // 2, y + n // 2)
                print(")", end="")
                return

    if check == 0:
        print("0", end="")
        return
    else:
        print("1", end="")
        return


quadtree(n, 0, 0)

ํ•ด์„ค

์ด์ „์— ํ’€์—ˆ๋˜ ์žฌ๊ท€ ๋ฌธ์ œ์™€ ๋น„์Šทํ•œ ์œ ํ˜•์ด๋‹ค.

๊ด„ํ˜ธ ์œ„์น˜๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฝ์ž…ํ•˜๋Š”์ง€ ๊ณ ๋ฏผ์ด์—ˆ๋Š”๋ฐ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์œ—๋ถ€๋ถ„๊ณผ ์•„๋ž˜๋ถ€๋ถ„์— ๊ด„ํ˜ธ๋ฅผ ์‚ฝ์ž…ํ•˜๋‹ˆ ํ•ด๊ฒฐ๋๋‹ค!

์žฌ๊ท€ ๋ฌธ์ œ๋Š” ์ต์ˆ™ํ•˜์ง€ ์•Š์•„ ๋” ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค๐Ÿ˜€