LEVEL2/2개 이하로 다른 비트

문제 설명


전체 코드

def solution(numbers):
    answer = []
    for number in numbers:
        temp = list('0' + bin(number)[2:])
        idx = ''.join(temp).rfind('0') # 이렇게 오른쪽부터 0 찾는 문법 외우기
        temp[idx] = '1'

        if number % 2 != 0:
            temp[idx+1] = '0'

        answer.append(int(''.join(temp), 2))

    return answer

해결 방법

비트 문제에 약한 나한테는 level2중에서 어려웠던 문제.

해결책은 간단하다.
첫 번째로 numbers의 원소가 짝수라면
가장뒤에 있는 0을 1로 바꾸어주면 된다.

그게 아닌 홀수라면
가장뒤에 있는 0을 찾아 1로 바꾸고 +1한 그 다음의 인덱스를 찾아 0으로 바꾸어 주면 된다.

좋은 웹페이지 즐겨찾기