문제

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

풀이

시도 1

while문 돌면서 n을 1씩 더해서 2진수로 변환했을때 “1"의 갯수가 원래 n의 2진수로 변환했을때 “1"의 갯수와 같으면 리턴했습니다. 다음 자연수를 찾는거에 시간복잡도가 크지 않을 거라 생각했습니다.

solution.py
1
2
3
4
5
6
7
def solution(n):
    cnt = format(n, "b").count("1")
    n += 1
    while True:
        if format(n, "b").count("1") == cnt:
            return n
        n += 1


다른사람 풀이

가독성은 좋지 않지만 pythonic ..

solution.py
1
2
def nextBigNumber(n, count = 0):
    return n if bin(n).count("1") is count else nextBigNumber(n+1, bin(n).count("1") if count is 0 else count)