본문 바로가기
Algorithm/etc

[파이썬] 백준 2630 : 색종이 만들기 (실버2)

by 베짱이28호 2023. 6. 5.

[파이썬] 백준 2630 : 색종이 만들기 (실버2)

 

 

2630번: 색종이 만들기

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

www.acmicpc.net


문제


풀이

0.방향성 생각

규칙 찾아주고 첫 번째 케이스만 하드코딩 한 후에 재귀호출해서 풀어주면 된다.

주어진 어레이를 가로 세로 2등분 총 4등분해서 기준점에서 재귀호출을 한다.

 

1. 전체 코드

import sys
input = sys.stdin.readline

n = int(input())
arr = []
w,b = 0,0
for i in range(n):
    arr.append(list(map(int,input().split())))
 
def solution(x,y,N) :
    global w,b
    color = arr[y][x]
    d = N//2
    for i in range(y,y+N) :
        for j in range(x,x+N) :
            if color != arr[i][j] :
                solution(x,y,d)
                solution(x+d,y,d)
                solution(x,y+d,d)
                solution(x+d,y+d,d)
                return 
    if color :
        b += 1
    else :
        w += 1

solution(0,0,n)
print(w,b,sep='\n')

input = sys.stdin.readline() 이렇게 써놔서 한참 삽질해버림

댓글