본문 바로가기

⏳ 알고리즘/python 알고리즘 문제 풀이

프로그래머스 - LV2. 2개 이하로 다른 비트

문제 

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

 

프로그래머스

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

programmers.co.kr

 

 

코드 

def solution(numbers):
    answer = []
    
    for num in numbers:
        num_b = '0'*(8-len(bin(num)[2:]))+bin(num)[2:]
        n = num 
        while n<=10**15:
            n += 1
            b = '0'*(8-len(bin(n)[2:]))+bin(n)[2:]
            count = 0
            for i in range(8):         
                if num_b[-i-1] != b[-i-1]:
                    count += 1
            if count <= 2:
                answer.append(n)
                break
    
    return answer

 

def solution(numbers):
    answer = []
    
    for n in numbers:
        b = list('0'*(8-len(bin(n)[2:]))+bin(n)[2:])
        idx = ''.join(b).rfind('0')
        b[idx] = '1'
        
        if n%2 == 1:
            b[idx+1] = '0'
            
        answer.append(int(''.join(b),2))
    
    return answer

 

def solution(numbers):
    answer = []
    
    for n in numbers:
        b = list('0' + bin(n)[2:])
        idx = ''.join(b).rfind('0')
        b[idx] = '1'
        
        if n%2 == 1:
            b[idx+1] = '0'
            
        answer.append(int(''.join(b),2))
    
    return answer

 

리뷰

b = list('0'*(8-len(bin(n)[2:]))+bin(n)[2:])

['0', '0', '0', '0', '0', '1', '1', '1']


b = list('0' + bin(n)[2:])

['0', '1', '1', '1']

 

=> 0을 임의로 추가해준게 인상깊었다