다음 큰 숫자 (Programmers 12911)

문파이더맨·2021년 5월 19일
0

Algorithm

목록 보기
20/58
post-thumbnail

🧑‍💻 다음 큰 숫자

  • 자연수 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 이하의 자연수 입니다.
  • 입출력 예
nresult
7883
1523

👨‍💻 해결방법

  • input 숫자를 이진수로 바꿔서 그걸 배열에 저장한 다음 1의 갯수를 파악한다.
  • 그리고 input 보다 큰 수부터 탐색해서 1의 갯수가 같으면 break

👨‍💻 코드

def binary(number) :
    binary_list = []
    # 문자열 인덱스 0, 1 제외하고 그 다음 2부터 1의 갯수 체크?
    b_n = str(bin(number))
    for i in range(2, len(b_n)):
        binary_list.append(b_n[i])

    return binary_list


def solution(n):
    answer = n
    n_list = binary(n)
    n_count = n_list.count('1')

    while True :
        answer += 1
        a_list = binary(answer)
        if n_count == a_list.count('1') :
            break

    return answer

👨‍💻 총평

  • 간단한 문제여서 한 큐에 통과했다.
  • 요즘 싸질러놓은 판들이 많아서 이게 옳은 것인가 싶지만 이렇게해야 공부도 효율적으로 할 수 있고 얻어가는 것도 많을 것 같다.
  • 간단히 해야할 것들을 정리해보면 자료구조, Skatch, 알고리즘, 알바, 42 정도는 명확히 해야한다.
  • 힘내자 힘!
profile
Sever 개발할래요.

0개의 댓글