문제 설명 및 제한사항
아이디어 및 해결 방법
코드
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
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges