🪴 Hayul's digital garden

Search

Search IconIcon to open search

다음 큰 숫자

Last updated Unknown Edit Source

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

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

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

# 제한 사항

# 입출력 예

nresult
7883
1523

# 입출력 예 설명


# 좋은 풀이

1
2
3
4
5
6
7
def solution(n):
    num1 = bin(n).count('1')
    while True:
        n = n + 1
        if num1 == bin(n).count('1'):
            break
    return n

# 나의 풀이

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from collections import Counter

def find_one(k):
    return Counter(list(format(k, 'b')))['1']

def solution(n):
    answer = n
    while True:
        answer += 1
        if find_one(n) == find_one(answer):
            break
    return answer

# 둘의 차이점

우선 Counter()를 쓸 이유가 없었다. 왜냐하면 문자열 뒤에는 .count()를 사용할 수 있기 때문이다. 굳이 Counter()를 쓰기 위해 리스트로 변환하는 작업도 필요가 없었던 것이다. 즉, 연산 낭비이다. 기억하자, 문자열에서 특정한 문자의 갯수를 알고 싶다면 .count()를 쓰면 된다는 것.