프로그래머스/2단계
다음 큰 숫자
js0616
2024. 4. 30. 21:43
2진법 기준 1의 갯수가 같으면서 , 해당 숫자보다 큰 숫자중, 가장 작은 숫자를 구하는 문제
78 : 1001110 // 4개
79 : 1001111 // 5개
80 : 1010000 // 2개
81 : 1010001 // 3개
82 : 1010010 // 3개
83 : 1010011 // 4개
84 : 1010100 // 3개
85 : 1010101 // 4개
86 : 1010110 // 4개
87 : 1010111 // 5개
88 : 1011000 // 3개
89 : 1011001 // 4개
90 : 1011010 // 4개
78 -> 83 -> 85 -> 86 -> 89 -> 90 .. ??? 모르겠다
10진수를 2진수로 변환하였을때 1의 갯수를 새는 함수 num2_count1 를 정의하고
받은 숫자를 1씩 증가하며 1의 갯수를 비교해보았다.
def num2_count1(n):
count = 0
while n > 0 :
if n % 2 == 1 :
count += 1
n = n//2
return count
def solution(n):
target = num2_count1(n)
i = 0
while 1:
i += 1
if target == num2_count1(n+i) :
return n+i