Search
Duplicate

다음 큰 숫자

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

def solution(n): b = list(bin(n).replace('0b', '').rjust(20, '0')) # 이진수의 오른쪽에서 왼쪽으로 오면서 '01'을 찾아서 '10'으로 바꿉니다. i = len(b) - 2 while i >= 0 and b[i:i+2] != ['0', '1']: i -= 1 b[i], b[i+1] = '1', '0' # index i+1 뒤의 1의 개수를 세어서, 이진수의 맨 뒤로 붙입니다. num1 = b[i+1:].count('1') new = ['0'] * (len(b[i+1:]) - num1) + ['1'] * num1 answer = b[:i+1] + new return int(''.join(answer), 2)
Python
복사

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges