프로그래머스. Level 2. 2개 이하로 다른 비트 파이썬 풀이
문제링크 https://programmers.co.kr/learn/courses/30/lessons/77885
알고리즘
짝수라면 마지막 비트만 1로 바꾸면 된다
홀수라면 0을 찾아 1로 바꾸고 그 다음 비트를 0으로 바꾸면 최솟값
def solution(numbers):
answer = []
for num in numbers:
if num % 2 == 0:
binary = list(bin(num)[2:])
binary[-1] = "1"
else:
binary = bin(num)[2:]
binary = "0" + binary
zero = binary.rfind('0')
binary = list(binary)
binary[zero] = "1"
binary[zero + 1] = "0"
answer.append(int("".join(binary), 2))
return answer