[백준] 2630 : 색종이 만들기 (python)

에딕·2021년 4월 30일
0

백준

목록 보기
10/13
post-thumbnail

👉 2630 : 색종이 만들기



✍ 내 코드


# 실버 3레벨    색종이 만들기
from sys import stdin

zero = 0
one = 0
li = []


def check(li):
    global one, zero
    li_one = sum(li, [])
    num = sum(li_one)
    if num == len(li_one):
        one += 1

    elif num == 0:
        zero += 1

    else:
        for i in split(li):
            check(i)


def split(li):
    side = int(len(li[0]) // 2)
    start = [(0, 0), (side, 0), (0, side), (side, side)]
    result = []

    for p in start:
        result.append([[li[p[0] + i][p[1] + j] for j in range(side)] for i in range(side)])

    return result


N = int(stdin.readline().strip())

for i in range(N):
    li.append([int(i) for i in stdin.readline().strip().split()])

check(li)

print(zero)
print(one)


✍ 팁


  • 간단한 분할정복 문제로 나누기 전 0, 1 전체 인지 확인해준 후 아닌 경우에는 4등분을 내 재귀를 이용하면 된다
profile
코딩💻 고양이😺

0개의 댓글