코딩테스트/프로그래머스
[프로그래머스] 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