문제

https://programmers.co.kr/learn/courses/30/lessons/12911?language=python3

풀이

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

n+1 부터 시작해서, n의 2진수 1개수가 같은 수를 찾아내면 된다.

def solution(n):
    ncount = list(bin(n))[2:].count('1')
    num = n + 1
    while True :
        if list(bin(num))[2:].count('1') == ncount : break
        num += 1
    
    return num

조건을 하나씩 코드로 옮기면 바로 해결되는 수준의 문제였다.
이건 다른 의미로 “이게 왜 LEVEL 2 야?” 라는 생각이 들었다.

댓글남기기