[백준] #2630 색종이 만들기 python

2023. 5. 19. 10:35

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

 

2630번: 색종이 만들기

첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다.

www.acmicpc.net

 

📕 설명 📕

divide and conquer 방법을 사용하였다.

 

🧑🏻‍💻 나의 풀이 🧑🏻‍💻

import sys


def divide_conquer(x, y, N):
    global cut, blue
    color = paper[x][y]

    for i in range(x, x + N):
        for j in range(y, y + N):
            if color != paper[i][j]:
                divide_conquer(x, y, N // 2)
                divide_conquer(x, y + N // 2, N // 2)
                divide_conquer(x + N // 2, y, N // 2)
                divide_conquer(x + N // 2, y + N // 2, N // 2)
                return 0
    if color == 0:
        cut += 1
    else:
        blue += 1


if __name__ == '__main__':
    N = int(sys.stdin.readline())
    paper = list(list(map(int, sys.stdin.readline().split())) for _ in range(N))

    cut, blue = 0, 0
    divide_conquer(cut, blue, N)
    print(cut)
    print(blue)

'Programming > Algorithm' 카테고리의 다른 글

[백준] #1235 학생 번호 python  (0) 2023.05.23
[백준] #1251 단어 나누기 python  (0) 2023.05.22
[백준] #1780 종이의 개수 python  (0) 2023.05.18
[백준] #2161 카드1 python  (0) 2023.05.17
[백준] #1309 동물원 python  (0) 2023.05.16

BELATED ARTICLES

more