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

mog·2020년 12월 1일
2

프로그래머스 level2. 쿼드압축 후 개수 세기

👀 문제 풀이 아이디어

👀 전체 코드

✅ indexing이 좀 헷갈리는 문제였다. 헷갈릴 땐 찍어보면서 하기!

# [0의 개수, 1의 개수]를 원소로 갖는 이차원 배열을 만드는 재귀함수
def check(s):
    n = len(s)
    if n == 1:
        return s[0][0]
    temp= [[] for _ in range(n//2)]
    for i in range(1,n,2):
        for j in range(1,n,2):
            zero = s[i][j][0] + s[i][j-1][0] + s[i-1][j][0] + s[i-1][j-1][0]
            one = s[i][j][1] + s[i][j-1][1] + s[i-1][j][1] + s[i-1][j-1][1]
            # 압축
            if one == 0: zero = 1
            if zero == 0: one = 1
            temp[i//2].append([zero, one])
    return check(temp)
            

def solution(arr):
    n = len(arr)
    first = [[] for _ in range(n//2)]

    # 초기 이차원 배열 만들기 
    for i in range(1,n,2):
        for j in range(1,n,2):
            temp = [arr[i][j], arr[i][j-1], arr[i-1][j], arr[i-1][j-1]]
            one = temp.count(1)
            zero = temp.count(0)
            if one == 0: zero = 1
            if zero == 0: one = 1
            first[i//2].append([zero, one])
    
    return check(first)

0개의 댓글