알고리즘 풀이/프로그래머스

[Level 2] 다음 큰 숫자

mhko411 2021. 2. 26. 16:56
728x90

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

 

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

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

programmers.co.kr


접근

n+1부터 검사를 하여 bin()을 통해 이진수로 변한 후 1의 개수를 카운트하였다.

그리고 입력받은 n과 같을 때 출력하도록한다.

 

구현

먼저 입력받은 n을 이진수로 변환하고 1의 개수를 cmp에 저장한다.

그리고 n+1부터의 수를 이진수로 변환하고 1의 개수를 카운트하여 cmp와 비교한다.

같을 때에는 answer에 추가하고 break를 하여 탐색을 종료한다.

def solution(n):
    answer = 0
    cmp = bin(n).count('1')
    for num in range(n+1, 1000001):
        cnt = bin(num).count('1')
        if cnt == cmp:
            answer = num
            break
    return answer

'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글

[Level 2] 큰 수 만들기  (0) 2021.02.27
[Level 2] 튜플  (0) 2021.02.26
[Level 2] 숫자의 표현  (0) 2021.02.24
[Level 3] N-Queen  (0) 2021.02.24
[프로그래머스] K번째 수 - map(), filter(), sort()  (0) 2021.02.23