[Python][프로그래머스][Level2] 쿼드압축 후 개수 세기

[Python][프로그래머스][Level2] 쿼드압축 후 개수 세기

코드

answer=[0,0]
def quadzip(arr):
    if len(arr)==1:
        answer[arr[0][0]]+=1
        return
    for i in arr:
        if abs(arr[0][0]-1) in i:
            break
    else:
        answer[arr[0][0]]+=1
        return
    
    quadzip([i[:len(arr)//2] for i in arr[:len(arr)//2]])
    quadzip([i[len(arr)//2:] for i in arr[:len(arr)//2]])
    quadzip([i[:len(arr)//2] for i in arr[len(arr)//2:]])
    quadzip([i[len(arr)//2:] for i in arr[len(arr)//2:]])
    
def solution(arr):
    quadzip(arr)
    return answer

일단 먼저 arr을 4등분해서 재귀하는 방식으로 풀었다.

만약에 arr의 길이가 1일 경우는 마지막까지 안나뉜 경우 이므로 answer의 해당 부분을 증가시킨다.

arr 안의 값이 모두 같다면 answer 의 해당 부분을 증가시키고 return 한다.

아닐 경우 4분의 1로 나눠서 다시 반복한다.

Discussion and feedback