[프로그래머스] 다음 큰 숫자 [연습문제] [python] Level2

 

문제 설명

 

자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.

  • 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다.
  • 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다.
  • 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다.

예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.

자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.

 

제한 사항

  • n은 1,000,000 이하의 자연수 입니다.

 

설계 및 구현

 

접근 방법

먼저 주어진 n을 2진수로 변환 하였을때의 1의 갯수를 저장한다.

그리고 n을 1씩 더해주면서 2진수로 변환했을 때 1의 갯수가 같은 수가 발견되면 그 숫자를 반환해주어 해결 할 수 있는 문제이다.

 

my_solution

def solution(n):
    # 1
    count = bin(n)[2:].count("1")
    # 2
    while True:
        # ①
        n += 1
        # ②
        if  count == bin(n)[2:].count("1"):
            # ⓐ
            return n

1. 주어진 n을 2진수 변환 시켰을 때 1의 갯수를 count에 저장해준다.

2. 반복문에서

    ①. n+=1을 해주면서

    ②. 2진수 변환 했을 때의 1의 갯수가 count와 같은지 확인한다.

        ⓐ. 만약 같다면 그 숫자를 반환해주어 해결 한다.

반응형

+ Recent posts