자연수 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):
cnt = bin(n).count('1') # bin()과 count()를 사용해 2진수 변환 후 1의 개수 카운팅
while True:
n += 1
if cnt == bin(n).count('1'): # n을 +1하면서 2진수 1의 개수를 카운팅 후, cnt와 비교
break
return n
bin()
을 사용하여 2진수로 만들기count()
를 사용하여 문자열에서의 '1' 개수 카운팅bin()
: , 0b
로 표현oct()
: , 0o
로 표현hex()
: , 0x
로 표현2-1) 10진수 숫자를 2진수, 8진수, 16진수로 만들기
#return type == str
print(bin(72)) #result : '0b1001000'
print(oct(72)) #result : '0o110'
print(hex(72)) #result : '0x48'
2-2) int()
를 통해 다시 숫자로 변환
int()
의 2번째 인자 default값은 10이기 때문에 int(12.3, 10)
하면 12가 나오는 것이다.
"""
1) 진수로 표현된 str을 다시 숫자로 만들고 싶을 때 int() 사용
2) 2번째 인자로 진수의 base값을 넘겨주면 됨
"""
print(int('0b1001000', 2)) #result : 72
print(int('0o110', 8)) #result : 72
print(int('0x48', 16)) #result : 72