[백준] 1992번 쿼드트리, 1780번 종이의 개수

heering·2023년 2월 16일
0

백준

목록 보기
5/11

✅ 1992번 쿼드트리 Python

def quarter(x, y, n):
    start = l[x][y]

    for i in range(x, x+n):
        for j in range(y, y+n):
            if start != l[i][j]:
                print('(', end='')
                quarter(x, y, n//2)
                quarter(x, y+n//2, n//2)
                quarter(x+n//2, y, n//2)
                quarter(x+n//2, y+n//2, n//2)
                print(')', end='')
                return

    if start == '0':
        print(0, end='')
        return

    elif start == '1':
        print(1, end='')
        return

N = int(input())
l = []

for i in range(0, N):
    l.append(list(input()))

quarter(0, 0, N)

색종이 만들기였나?? 그거랑 풀이가 거의 똑같음
유형을 좀 외워야겠다

✅ 1780번 종이의 개수 Python

def divide(x, y, n):
    global a, b, c
    start = l[x][y]

    for i in range(x, x+n):
        for j in range(y, y+n):
            if start != l[i][j]:
                divide(x, y, n//3)
                divide(x, y+n//3, n//3)
                divide(x, y+2*n//3, n//3)

                divide(x+n//3, y, n//3)
                divide(x+n//3, y+n//3, n//3)
                divide(x+n//3, y+2*n//3, n//3)

                divide(x+2*n//3, y, n//3)
                divide(x+2*n//3, y+n//3, n//3)
                divide(x+2*n//3, y+2*n//3, n//3)

                return

    if start == -1:
        a += 1
    elif start == 0:
        b += 1
    elif start == 1:
        c += 1

N = int(input())
l = []

for i in range(0, N):
    l.append(list(map(int, input().split())))

a, b, c = 0, 0, 0
divide(0, 0, N)

print(a) # -1
print(b) # 0
print(c) # 1

오케이 이건 그냥 3등분

0개의 댓글