주어진 수보다 크지만 이진수로 변환했을때 비트가 다른 지점이 2개 이하인 수를 구하기.
def solution(numbers):
result = []
for num in numbers:
if num % 2 == 0:
# 짝수의 경우 무조건 오른쪽 마지막 숫자가 0이다.
result.append(num + 1)
else:
# 홀수의 경우 가장 마지막에 있는 0자리수를 찾아야 한다.
bnum = bin(num)[2:]
n = len(bnum)
idx = bnum.rfind('0')
result.append(num + (1 << (n - idx - 1)) - (1 << (n - idx - 2)))
return result