문제 확인

 

프로그래머스

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

programmers.co.kr

나의 풀이

  • 완전 탐색을 활용해서 풀었다.
  • 이 경우 시간 복잡도는 $N$ * $((\log C + C)) \times C$이다.
    • $C$가 대략 $\log_{2}{10^6} = 20$ 정도라서 시간 초과가 발생하진 않는다.
# 다음 큰 숫자 : 'n보다 크고, 2 진수 표현에서 1의 갯수가 같은 수' 중에서 가장 작은 숫자
# 시간 복잡도 : n * ((logc + c) * c)
def solution(n):
    n_cnt = bin(n)[2:].count("1")
    check = n + 1
    while True:
        if bin(check)[2:].count("1") == n_cnt:
            return check
        check += 1