S E P H ' S

[Python] 쿼드압축 후 개수 세기 본문

Algorithm/Programmers

[Python] 쿼드압축 후 개수 세기

yoseph0310 2021. 8. 27. 17:42
 

코딩테스트 연습 - 쿼드압축 후 개수 세기

[[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15]

programmers.co.kr

풀이

분할정복 문제이다.

1. 각 사각형 안에서의 첫 좌표 값을 초기값으로 잡고, 

2. 범위를 2를 나눈 만큼 찾아 들어간다.

 

def solution(arr):
    answer = [0, 0]
    N = len(arr)
    
    def d_q(r, c, n):
        init = arr[r][c]
        for i in range(r, r + n):
            for j in range(c, c + n):
                if arr[i][j] != init:
                    nn = n // 2
                    d_q(r, c, nn)
                    d_q(r, c + nn, nn)
                    d_q(r + nn, c, nn)
                    d_q(r + nn, c + nn, nn)
                    return
                
        answer[init] += 1
    
    d_q(0, 0, N)
    return answer

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

[Python] 이진 변환 반복하기  (0) 2021.08.30
[Python] 점프와 순간이동  (0) 2021.08.28
[Python] 스킬트리  (0) 2021.08.27
[Python] 방문 길이  (0) 2021.08.26
[Python] 방금그곡  (0) 2021.08.26