
자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.
자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.
| n | result |
|---|---|
| 78 | 83 |
| 15 | 23 |
문제 예시와 같습니다.
15(1111)의 다음 큰 숫자는 23(10111)입니다.
| 함수/메서드 | 설명 | 예시 |
|---|---|---|
| bin(n) | n을 2진수 문자열로 변환 | bin(78) → '0b1001110' |
| count('x') | 문자열에서 'x' 개수 세기 | '0b1001110'.count('1') → 4 |
n = 78 -> 1001110 -> 4개
n2 = 79 -> 1001111 -> 5개
n2 = 80 -> 1010000 -> 1개
n2 = 81 -> 1010001 -> 2개
n2 = 82 -> 1010010 -> 2개
n2 = 83 -> 1010011 -> 4개 -> 정답
=> return 83
def solution(n):
for n2 in range(n + 1, 1000001): # n + 1부터 돌면서
if bin(n).count('1') == bin(n2).count('1'): # 이진수(bin)에서 1의 개수가 같은 가장 첫 숫자 n2를 return
return n2