EXCELSIOR

[Level 3] 다음 큰 숫자 본문

Python/알고리즘_문제

[Level 3] 다음 큰 숫자

Excelsior-JH 2017. 10. 11. 20:05

[문제]

어떤 수 N(1≤N≤1,000,000) 이 주어졌을 때, N의 다음 큰 숫자는 다음과 같습니다.

  • N의 다음 큰 숫자는 N을 2진수로 바꾸었을 때의 1의 개수와 같은 개수로 이루어진 수입니다.
  • 1번째 조건을 만족하는 숫자들 중 N보다 큰 수 중에서 가장 작은 숫자를 찾아야 합니다.

예를 들어, 78을 2진수로 바꾸면 1001110 이며, 78의 다음 큰 숫자는 83으로 2진수는 1010011 입니다. N이 주어질 때, N의 다음 큰 숫자를 찾는 nextBigNumber 함수를 완성하세요.


[풀이]

bin()함수를 사용하여 for문을 돌면서 주어진 숫자의 2진수에서 1의 개수가 같은 수를 찾아서 return해 주었다.

1
2
3
4
5
6
7
8
def nextBigNumber(n):
    for num in range(n+11000001):
        if bin(num)[2:].count('1'is bin(n)[2:].count('1'):
            return num
            break
 
#아래 코드는 테스트를 위한 출력 코드입니다.
print(nextBigNumber(78))
cs


Comments