자연수 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
를 통해 반복문을 탈출합니다.