title: "[프로그래머스] 표현 가능한 이진트리 Python 파이썬 해설 (Level 3) - 이도훈"
cleanUrl: "programmers/150367"
description: "프로그래머스 Level 3 문제 [표현 가능한 이진트리]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

def isvalid(x):
    if len(x) == 1:
        return True
    
    if x[len(x)//2] == '0':
        return x.count('0') == len(x)
    else:
        return isvalid(x[:len(x)//2]) and isvalid(x[len(x)//2+1:])

def solution(numbers):
    answer = []
    for num in numbers:
        flag = 0
        
        # n층: 2**n-1 자리 수 표현 가능
        for n in range(1, 7):
            rep = bin(num).replace('0b', '')
            if len(rep) > 2**n-1:
                continue
                
            rep = rep.rjust(2**n-1, '0')
            if isvalid(rep):
                flag = 1
        
        answer.append(flag)
            
    return answer

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges