문제 확인
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
- 완전 탐색을 활용해서 풀었다.
- 이 경우 시간 복잡도는 N * ((logC+C))×C이다.
- C가 대략 log2106=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