2개 이하로 다른 비트
우선 짝수와 홀수를 나눠서 생각한다.
짝수면 1만 더하면 된다.
짝수의 2진수는 모두 0으로 끝나기 때문에 끝을 1로 바꾸는 것 만으로 해결이 가능하기 때문
ex)
10 -> 11
100 -> 101
홀수는
0을 미포함하는 경우 즉 1로만 이루어진 경우 앞에서 2번째 자리에 0을 삽입하여 해결
ex) 111 -> 10110을 포함하는 경우 마지막 0을 1로 바꾸고 그 뒤에 1을 0으로 바꾸어서 해결
ex) 10011 -> 10101
def solution(numbers): answer = [] for n in numbers: if n & 1: bit = '0' + format(n, 'b') for i in range(len(bit) - 1, -1, -1): if bit[i] == '0': bit = bit[:i] + '10' + bit[i + 2:] break answer.append(int(bit, 2)) else: answer.append(n + 1) return answer