요약하자면
1. n보다 큰 수
2. 이진수로 변환했을때 n을 이진수로 변환한 것과 1의 갯수가 같은 수
3. 위 두가지 만족하면서 제일 작은 숫자.
def solution(n):
answer = 0
temp = n+1
originOne = len((str(bin(n)).replace("0b","")).replace("0", ""))
while True:
tempOne = len((str(bin(temp)).replace("0b","")).replace("0", ""))
if originOne == tempOne:
return temp
break
else:
temp+=1
return answer
간단한 코드입니다.
originOne은 처음에 한번만 만들어주면 되고
계속 while문이 돌면서 조건에 부합한 temp를 찾습니다. 매번 1씩 더해줍니다.
모든 조건을 만족하는 temp를 찾으면 그 즉시 temp를 반환하며 프로그램을 종료합니다.