[프로그래머스] 다음 큰 숫자 | bin 을 통해 이진수로 변경하기

 

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

 

def solution(n):
    target =list(bin(n)[2:]).count("1")
    cnt = 0
            
    next = n
    while (target != cnt) :
        next += 1
        cnt = list(bin(next)[2:]).count("1")
        if(target==cnt) :
            return next

 

 

파이썬에서 십진수<-> 이진수 사이 변형은 bin 이라는 함수를 통해 이루어지며

bi+숫자 형태로 출력되므로 [2:] 를 통해 이를 제거해주어야 한다. 

 

=> 문제를 풀 때 갯수가 같고, 00011 등으로 출력 되는 수를 예외로 두어야 하나 고민했는데, 이진수로의 변형 과정 중에서 앞에 오는 0 은 결국 없는 수라고 봐도 무방하므로 상관이 없었다.

 

=> 0의 갯수가 아닌 1의 갯수를 찾아야 하므로 예외 케이스는 생각하지 않아도 됐다.