본문 바로가기
Algorithm/프로그래머스

[프로그래머스] Lv2 - 다음 큰 숫자 (파이썬)

by _temp 2022. 5. 14.

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

 

코딩테스트 연습 - 다음 큰 숫자

자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니

programmers.co.kr

 

def solution(n):
    cnt = bin(n)[2:].count('1')
    result = 0
    for x in range(n+1, 1000001):
        if bin(x)[2:].count('1') == cnt:
            result = x
            break
    return result

 

 

풀이
1. n을 2진수로 바꾸고 1의 개수를 cnt에 기록
2. n+1부터 1000000까지 해당 수를 2진수로 바꾸고 1의 개수가 cnt인 것을 찾으면 break
3. 결괏값 리턴

 

bin함수를 사용하면 '0b(2진수)'가 된다. 슬라이싱을 이용해서 '0b'를 제거 해주자

추가로 2진수를 10진수로 바꿀 때, int(2진수, 2)를 사용할 수 있다.

(int화 할 것인데 해당 수는 2진수라는 뜻으로 2를 option으로 사용)