문제 링크
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
풀이
- 분할 정복 문제
answer = [0] * 2
def sol(arr, x,y,n):
global answer
# 시작 숫자
start = arr[x][y]
for i in range(x,x+n):
for j in range(y,y+n):
# 다른 숫자 존재하면 분할
if arr[i][j] != start :
sol(arr,x, y, n//2)
sol(arr,x+n//2 , y , n//2)
sol(arr,x, y+n//2, n//2)
sol(arr,x+n//2, y + n//2, n//2)
return
# 1로 압축 가능하면
if start == 1 :
answer[1] += 1
# 0으로 압축 가능하면
else:
answer[0] += 1
def solution(arr):
global answer
sol(arr,0,0,len(arr))
return answer
'개발 > algorithm' 카테고리의 다른 글
[프로그래머스][level2] [1차] 캐시 (0) | 2022.03.29 |
---|---|
[프로그래머스][level2] 모음사전 - python (0) | 2022.03.29 |
[프로그래머스][level2] 점프와 순간 이동 (0) | 2022.03.29 |
[프로그래머스][level2] 가장 큰 정사각형 찾기 -python (0) | 2022.03.29 |
[프로그래머스][level3] 금과 은 운반하기 - python / 파라메트릭 서치 (0) | 2022.03.29 |