Search
Duplicate

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
Python
복사

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges