Programmers Coding Quiz #32 다음 큰 숫자

김기욱·2021년 2월 18일
0

코딩테스트

목록 보기
32/68

문제 설명

자연수 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 이하의 자연수 입니다.

입출력 예

nreturn
7883
1523

풀이

def solution(n):
    num = bin(n).count('1')
    count = 1
    while True:
        if bin(n + count).count('1') == num:
            return n + count
        count += 1
  1. n을 bin을 활용해 2진수로 만들고 1의 개수를 num으로 저장해줍니다
  2. while문을 활용해 카운트로 1씩 증가하고 조건문으로 2진수의 개수가 num과 같은지 비교해서 같으면 카운트와 주어진 n을 더한 값을 반환합니다.
profile
어려운 것은 없다, 다만 아직 익숙치않을뿐이다.

0개의 댓글