코딩테스트/프로그래머스

[프로그래머스] Level 2 - 쿼드압축 후 개수 세기 (Python)

ye0nn 2022. 6. 25. 18:54

 

 

 

 

 

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

 

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

[[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

 

 

 

 

✅ Solution

  • 재귀함수를 이용한다.
  • 만약 첫번째 요소와 값이 다르다면 압축이 불가능하므로, 다시 함수를 호출한다.
  • 모두 같다면 압축 가능하므로 answer에 값을 더해준다.

 

 

 

 

✅ Code

def quad(arr, x, y, l):
    for i in range(x, x + l):
        for j in range(y, y + l):
            if arr[i][j] != arr[x][y]:
                l = l // 2
                quad(arr, x, y, l)
                quad(arr, x, y + l, l)
                quad(arr, x + l, y, l)
                quad(arr, x + l, y + l, l)
                return

    answer[arr[x][y]] += 1

def solution(arr):
    global answer
    answer = [0, 0]

    quad(arr, 0, 0, len(arr))

    return answer