😎코딩테스트 연습>월간 코드 챌린지 시즌2>2개 이하로 다른 비트
- 짝수일 때
1만 더해주면 됨- 홀수일 때
이진수 비트가 전부 1일때는
EX) 111 -> 1011, 11 -> 101
아니라면 비트가 01인 부분을 10으로 바꾸어 줌
def solution(numbers):
answer = []
for n in numbers:
if n%2 == 0:
answer.append(n+1)
else:
b = format(n, 'b')
s = int('1'*len(b), 2)
if n & s == s:
k = '1' + '0'*(len(b)-1)
answer.append(n + int(k,2))
else:
for i in range(len(b)-1, 0, -1):
if b[i] == '1' and b[i-1] == '0':
b = b[:i-1] + '10' + b[i+1:]
answer.append(int(b,2))
break
return answer
유익한 글이었습니다.