
자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.
예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.
자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.
제한 사항
| n | result |
|---|---|
| 78 | 83 |
| 15 | 23 |
입출력 예#1
문제 예시와 같습니다.
입출력 예#2
15(1111)의 다음 큰 숫자는 23(10111)입니다.
def solution(n):
answer = n
temp = (format(n,'b')).count('1')
while True:
answer +=1
if (format(answer,'b')).count('1') == temp:
break
return answer
풀이를 보시면 format와count라는 함수가 쓰여졌습니다. 이 두 함수가 풀이의 핵심으로 format은 10진수의 수를 2진수로 바꾸어줍니다. format(n,'b')의 'b'는 Binary를 뜻합니다.
count는 Python에서 문자열에서 부분 문자열의 개수를 세는 메소드입니다. 여기서 count는 2진수로 변환된 n의 1의 개수를 세서 반환합니다.
그렇게 해서 변수 temp에는 n의 1의 개수가 저장되게 됩니다.
while True:는 다음 큰 숫자를 찾을 때까지 무한히 반복합니다. 뒤에 나오는 if문은 answer의 1의 개수와 temp를 비교해서 찾으면 break를 통해 반복문을 탈출합니다.