Coding Test/programmers
lv.2 다음 큰 숫자
210B
2023. 9. 1. 18:00
1의 갯수가 동일해야 한다는 점에 착안해서 수학적으로 풀어봤다.
def solution(n):
b = bin(n).replace('0b', '0')
m = b.rfind('01')
k = b[m+2:].count('1')
b = b[:m] + '10' + '0'*(len(b)-m-2-k) + '1'*k
answer = int(b, 2)
return answer
programmers solution
def nextBigNumber(n):
one_count = bin(n).count('1')
for compare_num in range(n+1, 2*n+1):
if bin(compare_num).count('1') == one_count:
break
return compare_num
복잡도가 안좋다고는 하는데,, 내 풀이는 슬라이싱을 쓰고 있어서 딱히.. 낫다고 할 수 없는 듯