Python/Programmers

[프로그래머스/Python] Lv 2. 2개 이하로 다른 비트

hwangzzi 2023. 4. 21. 03:10

⭐ 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/77885

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

⭐ 풀이 코드

def solution(numbers):
    answer = []
    
    for n in numbers:
        # 짝수일 경우
        if n%2 == 0:  
            # 바로 다음에 오는 수가 답
            answer.append(n+1)
            
        # 홀수일 경우    
        else:         
            temp = '0' + bin(n)[2:]
            idx = temp.rfind('0')  # 오른쪽부터 문자찾기
            temp = list(temp)
            
            # 가장 마지막에 나오는 0을 1로 변환
            # 그 다음 나오는 1을 0으로 변환
            temp[idx] = '1'
            temp[idx+1] = '0'
            
            temp = ''.join(temp)
            num = int(temp, 2)  # 2진수 -> 10진수    
            answer.append(num)
            
    return answer