백준 1780번(종이의 개수)

ansehun·2022년 9월 13일
0

백준 코딩 연습

목록 보기
7/9

📒 알고 가야 하는 것

-재귀 함수
- 어떤 그룹 안에 모두 같은지 확인하기 위해서는 첫 번째 값을 찾고 그 값과 같은지를 계속 탐색하는 방식을 생각해야함.

📌 코드

import sys



def paper(y, x, n) :
    global count_1
    global count0
    global count1 
    
    init = graph[y][x]
    for i in range(y, y+n) :
        for j in range(x, x+n) :
            if init != graph[i][j] :
                paper(y, x, n//3)
                paper(y, x + n//3, n//3)
                paper(y, x + n//3 * 2,  n//3)
                paper(y + n//3, x, n//3)
                paper(y + n//3, x + n//3, n//3)
                paper(y + n//3, x + n//3 * 2,  n//3)
                paper(y + n//3 * 2, x, n//3)
                paper(y + n//3 * 2, x + n//3, n//3)
                paper(y + n//3 * 2, x + n//3 * 2,  n//3)    
            
                return
    
    if init == 0 :
        count0 += 1
    elif init == 1 :
        count1 += 1
    elif init == -1 :
        count_1 += 1
        
    return

N = int(sys.stdin.readline())
graph = []
for _ in range(N) :
    tmp = list(map(int, sys.stdin.readline().rstrip().split()))
    graph.append(tmp)


global count_1
global count0
global count1 
count1 = 0
count0 = 0
count_1 = 0

paper(0,0,N)

print(count_1)
print(count0)
print(count1)

📌 피드백

- 재귀함수가 얼마나 더 어려울지는 모르지만 기본에 대해서는 인지한듯
- 여기서 사용한 개념을 잊지말자

0개의 댓글