본문 바로가기

알고리즘(Python)

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

https://school.programmers.co.kr/learn/courses/30/lessons/12911?language=python3

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

전체 코드

def solution(n):
    answer = 0
    binN = bin(n)
    while True:
        n += 1
        if bin(n)[2:].count("1") == binN.count("1"):
            answer = n
            break
    return answer

 

알고리즘 설명

Python 내부 함수인 bin()과 list 내장 함수인 count()를 사용하였다.

 

코드 설명

bin()을 통해 n을 이진수로 변환한 후, count() 함수를 사용해 1의 개수를 count 하였다.

n을 1씩 증가시키면서 반복문에서 증가한 n을 이진수로 변환해 주었다.

만약 1의 개수가 기존 n과 동일하다면, 그 수를 answer에 저장하고 반복문을 탈출한 뒤 answer를 return 한다.