코딩테스트/백준

[백준] 2630번, 색종이 만들기

HU_717 2023. 4. 6. 16:41

✏️  문제

💡 최종 코드

N = int(input())
color = [list(map(int, input().split())) for _ in range(N)]

blue = 0
white = 0

def solution(x, y, n):
    global white, blue
    # 시작점 설정
    e_color = color[x][y]
    # 4분할
    for i in range(x, x+n):
        for j in range(y, y+n):
            if e_color != color[i][j]:
                solution(x, y, n // 2)
                solution(x+n//2, y, n//2)
                solution(x, y+n//2, n//2)
                solution(x+n// 2, y+n//2, n//2)
                return
    if e_color == 1:
        blue += 1
    else:
        white += 1
    return

solution(0, 0, N)
print(white)
print(blue)

 

 

마무리

문제를 이해하는데는 어렵지 않았으며 이를 for문으로만 돌리려는 생각을 했었다.

재귀로 여러 문제를 해결하려는 노력이 필요하다

'코딩테스트 > 백준' 카테고리의 다른 글

[백준] 11053번, 가장 긴 증가하는 부분 수열  (0) 2023.04.06
[백준] 11758번, CCW  (0) 2023.03.30
[백준] 1927번, 최소 힙  (0) 2023.03.09