def solution(n):
num = 0
nToBin = bin(n)
for i in range(2, len(nToBin)):
if nToBin[i] == '1' : num+=1
result = n+1
result_num = 0
while True:
tmp = bin(result)
for i in range(2, len(tmp)):
if tmp[i] == '1' : result_num+=1
if result_num == num: return result
result+=1
result_num = 0
그냥 이진수로 바꾸고 1의 개수를 구해서 이진수로 바꿨을 때 1의 개수가 같은 수를 while문을 돌려 찾아주었다.
코드가 조금 난잡하다고 생각했는데, 역시 함수를 몰라 코드가 난잡해질 수 밖에 없었다.
count함수를 쓰면 for문을 돌며 갯수를 구하지 않더라도 쉽게 개수를 셀 수 있다.
따라서 1의 개수를 for문을 돌며 구하는 이 코드 대신
for i in range(2, len(tmp)):
if tmp[i] == '1' : result_num+=1
count함수를 통해 쉽게 변경해 줄 수 있다.
result_num = bin(n).count("1")
따라서 count를 쓴 새로운 코드는 다음과 같다. 코드가 훨씬 간단해진 것을 볼 수 있다.
def solution(n):
result = 0
num = bin(n).count("1")
t = n+1
while True:
result = bin(t).count("1")
if result == num: return t
t+=1