본문 바로가기
파이썬 알고리즘 코딩

가장 큰 수(프로그래머스 level2)

by 볼록티 2021. 1. 21.
728x90
반응형
def binary_change(x):
    b = ''
    while x > 0:
        y1, y2 = divmod(x, 2)
        x = y1
        b += str(y2)
    return b[::-1]

def solution(n):
    
    answer=0
    one_count = binary_change(n).count('1')
    
    while n:
        n+=1
        n_bin = binary_change(n)
        if one_count == n_bin.count('1'):
            answer = n
            break

    
    return answer

문제의 조건에 맞추어 함수를 작성였다.

binary_change는 십진수를 이진수를 변환하는 코드.

solution은 기존의 n 에서 1씩 더해서 이진수로 변환하여 '1'의 개수를 세고, 처음 n일 때의 이진수의 '1'의 개수와 동일한지 확인하는 과정을 무한 반복하다가 이진수 일 때 '1'의 개수가 동일한게 등장하면 종료.

 

728x90
반응형

댓글