👨🏻‍💻알고리즘/프로그래머스

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

waveofmymind 2023. 3. 7. 12:52

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12911

 

프로그래머스

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

programmers.co.kr

코드

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

풀이

  • 파이썬에서 십진수를 이진수로 변환하는 함수 bin()을 이용한다. 
  • bin()은 결과를 0bxxxxx의 형태로 반환해주므로, 슬라이싱 [2:]를 하면 0b를 자른 결과의 문자열만 얻을 수 있다.
  • 1번과 2번을 만족하는 n보다는 큰 수를 구하려면, n+1부터 탐색을 시작한다.
  • 시퀀스별로 n+1을 tmp라고 하면, tmp를 이진수로 변환해서 해당 이진수 문자열의 1의 개수를 비교해서 같으면 바로 while문을 종료한다.