최대 1 분 소요

문제 링크

내 풀이

def solution(n):
    n_count = bin(n)[2:].count('1')
    big_n = n + 1
    while True:
        big_count = bin(big_n)[2:].count('1')
        if big_count == n_count:
            return big_n
        big_n += 1

다른 풀이

def solution(n):
    
    # n을 2진수로 변환하고 1의 개수를 세어 n_count1에 저장
    n_count1 = bin(n).count('1')
    
    # n의 다음 숫자를 구하기 위해 next_n을 n+1로 초기화
    next_n = n + 1
    
    # 무한 루프
    while True:
        
        # next_n을 2진수로 변환하고 1의 개수를 세어서 n_count1과 같을시,
        # next_n이 우리가 찾는 숫자이므로 next_n을 반환(return)하고 함수를 종료
        if n_count1 == bin(next_n).count('1'):
            return next_n
        
        # next_n과 n_count1이 같지 않다면 next_n에 1을 더해 다음 숫자로 넘어갑니다.
        next_n += 1
출처: https://1ets-just-do-it.tistory.com/118 [파이썬은 신이야🔥🔥🔥:티스토리]

풀이 해석

  • bin 함수를 이용해 2진변환을 하였다
  • count를 통해 1을 센 후 1개수가 같은 수가 나오면 return

배울 점

  • bin 함수에 바로 count 적용

댓글남기기