본문 바로가기
Programming/Programmers

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

by 데이터현 2021. 11. 2.

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

 

코딩테스트 연습 - 2개 이하로 다른 비트

 

programmers.co.kr

 

처음에 xor 연산 + count('1') <=2로 풀었다가 시간 초과가 났다.

그래서 좀 억지지만 규칙을 찾아서 그대로 구현했다.

 

뭐 어쨌든 답이 틀린건 아니니깐..?

 

나의 풀이

def solution(numbers):
    answer = []
    for i in numbers:
        binary = list(bin(i))
        binary.reverse()
        idx = binary.index('0')
        if idx == len(binary)-1:
            binary.reverse()
            binary = '0b10'+''.join(binary[3:])
        elif idx == 0:
            binary[idx] ='1'
            binary.reverse()
            binary = ''.join(binary)
        else:
            binary[idx] = '1'
            binary[idx-1] = '0'
            binary.reverse()
            binary = ''.join(binary)
        answer.append(int(binary,2))
    return answer

댓글