[프로그래머스] 다음 큰 숫자

박형진·2021년 11월 28일
0

https://programmers.co.kr/learn/courses/30/lessons/12911


1. 전체 코드

def solution(n):
    count = 1
    binary = list('0' + bin(n)[2:])
    if binary[-1] == '0':
        binary[-1] = '1'
        count += 1
    k = 0
    for i in range(len(binary)-1, -1, -1):
        if binary[i] == '0' and k >= count:
            break
        if binary[i] == '1':
            k += 1
    zero_idx = i
    binary[zero_idx] = '1'
    for i in range(zero_idx + 1, len(binary)):
        if count == 0:
            break
        if binary[i] == '1':
            binary[i] = '0'
            count -= 1
    return int(''.join(binary), 2)

profile
안녕하세요!

0개의 댓글