PS/이분 탐색
[프로그래머스] No.150367 표현 가능한 이진트리 完
_빌런
2023. 9. 29. 17:40
def solution(numbers):
def proof(num):
bnum = bin(num)[2:]
len_bin = len(bin(num)[2:])
next_squ2minus1 = (1 << (len(bin(len_bin)[2:]))) - 1
fill = bnum.zfill(next_squ2minus1)
for idx, val in enumerate(fill, 1):
if idx % 2 == 0 and val == "0":
half = (idx & (-idx)) // 2
bef_idx = idx - half - 1
aft_idx = idx + half - 1
if int(fill[bef_idx]) + int(fill[aft_idx]):
return 0
return 1
answer = []
for num in numbers:
answer.append(proof(num))
return answer