본문 바로가기

코딩테스트/Python

[프로그래머스] 다음 큰 숫자

내 코드

def solution(n):
    a1 = bin(n)[2:].count('1')
    b1 = 0
    
    i=1
    while a1 != b1:
        b = bin(n+i)[2:]
        b1 = b.count('1')
        i+=1
    return int(b,2)

n의 1의 갯수를 구하고 n+i의 이진수의 1의 갯수가 n의 이진수의 1의 갯수와 같을 때까지 구해준다.

 

다른사람 코드

def nextBigNumber(n):
    num1 = bin(n).count('1')
    while True:
        n = n + 1
        if num1 == bin(n).count('1'):
            break
    return n

비슷하다!!! i를 더해주는 방식이 아닌 n을 조정하여 푼 것이다.