[프로그래머스 Level2] 2개 이하로 다른 비트

CHOI YUN HO·2022년 2월 13일
1

알고리즘 문제풀이

목록 보기
61/63

📃 문제 설명

2개 이하로 다른 비트

[문제 출처 : 프로그래머스]

👨‍💻 해결 방법

우선 짝수와 홀수를 나눠서 생각한다.

짝수면 1만 더하면 된다.
짝수의 2진수는 모두 0으로 끝나기 때문에 끝을 1로 바꾸는 것 만으로 해결이 가능하기 때문
ex)
10 -> 11
100 -> 101

홀수는

0을 미포함하는 경우 즉 1로만 이루어진 경우 앞에서 2번째 자리에 0을 삽입하여 해결
ex) 111 -> 1011

0을 포함하는 경우 마지막 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
profile
가재같은 사람

0개의 댓글