개발/algorithm

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

zzi_on2 2022. 2. 8. 17:02

문제 링크

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

 

코딩테스트 연습 - 다음 큰 숫자

자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니

programmers.co.kr

풀이 

- 이분 탐색으로 풀어야 되나 싶었는데 완전 탐색으로도 통과 

- n+1 부터 1씩 증가 시켜주면서 이진수에서 1의 개수가 동일하면 중단 

def solution(n):
  answer = 0
  b = str(format(n, 'b')).count('1')

  for i in range(n+1, 1000000):
    
    if str(format(i, 'b')).count('1')== b:
      answer = i 
      break

  return answer