[프로그래머스/파이썬] Level 2 쿼드압축 후 개수 세기

bye9·2021년 4월 9일
0

알고리즘(코테)

목록 보기
103/130

https://programmers.co.kr/learn/courses/30/lessons/68936


문제풀이

예 #1을 예제로 살펴보자.

배열 arr의 길이는 4이다.
처음엔 0,0부터 4,4까지 같은 값인지를 확인한다. 같은 경우 result에서 그 값을 +1해준다.
다르다면 총 4개의 사각형으로 나눠져서 각각 시작점이 (0,0),(0,2),(2,0),(2,2)인 경우에 길이 2만큼 돌며, 같은 값인지를 확인한다.

소스코드

def solution(arr):
    result=[0,0]
    length=len(arr)
    
    def compression(a,b,l):
        start=arr[a][b]
        for i in range(a,a+l):
            for j in range(b,b+l):
                if arr[i][j]!=start:
                    l=l//2
                    compression(a,b,l)
                    compression(a,b+l,l)
                    compression(a+l,b,l)
                    compression(a+l,b+l,l)
                    return
                
        result[start]+=1
        
    compression(0,0,length)
    
    return (result)

0개의 댓글