๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Class3] 1992๋ฒˆ_์ฟผ๋“œํŠธ๋ฆฌ

Dbswnstjd 2022. 11. 10. 03:16

๋ฌธ์ œ

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

 

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

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

www.acmicpc.net

ํ’€์ด

n = int(input())

tree = [list(map(int,(input()))) for _ in range(n)]
result = []

def quad_tree(x,y,n):
    global result
    color = tree[x][y]

    for i in range(x, x+n):
        for j in range(y, y+n):
            if color != tree[i][j]: # ๋ฒ”์œ„์•ˆ์— ํ•œ๊ฐœ๋ผ๋„ ๋‹ค๋ฅธ๊ฒฝ์šฐ๋Š” 4๋ถ„๋ฉด์œผ๋กœ ๋‚˜๋ˆ ์„œ ๋‹ค์‹œ ๊ฒ€์ƒ‰
                result.append("(") # 4๋ถ„๋ฉด์œผ๋กœ ๋‚˜๋ˆŒ๋•Œ ๊ด„ํ˜ธ๋ฅผ ์นœ๋‹ค.
                quad_tree(x,y,n//2)
                quad_tree(x, y+n//2, n//2)
                quad_tree(x+n//2, y, n//2)
                quad_tree(x+n//2, y+n//2, n//2)
                result.append(")")
                return
    result.append(color) # ์žฌ๊ท€๋กœ ์•ˆ๋“ค์–ด๊ฐ€๊ณ  for๋ฌธ์ด ์ „๋ถ€ ๋‹ค ๋๋‚œ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ”์œ„์•ˆ์— ๋ชจ๋“ ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

quad_tree(0,0,n)
print("".join(map(str,(result))))