title: "[프로그래머스] 2개 이하로 다른 비트 Python 파이썬 해설 (Level 2) - 이도훈"
cleanUrl: "programmers/77885"
description: "프로그래머스 Level 2 문제 [2개 이하로 다른 비트]의 풀이를 정리합니다."
def solution(numbers):
answer = []
for number in numbers:
b = list(bin(number).replace('0b', ''))
# 이진수를 거꾸로 읽으면서 처음 만나는 0과 그 앞의 1을 1과 0으로 바꾼다.
found = False
for i in range(len(b) - 1, -1, -1):
bit = b[i]
# 예외처리: 0이 맨 뒤에 나오는 경우
if i == len(b) - 1 and bit == '0':
b[i] = '1'
found = True
break
elif bit == '0':
b[i] = '1'
b[i+1] = '0'
found = True
break
# 예외처리: 0이 없는 경우
if not found:
b[0] = '0'
b = ['1'] + b
answer.append(int(''.join(b), 2))
return answer
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges