[프로그래머스] 다음 큰 숫자(python) - 복습

.·2022년 10월 20일
0

문제 링크 - https://programmers.co.kr/learn/courses/30/lessons/12911


풀이 과정

  • 우선 현재 n을 이진수로 변환해서 1의 갯수를 세고, 무한 반복문 안에서 n에 +1을 해주며 1의 갯수를 세어 가장 처음 1의 갯수와 같다면 그 때의 숫자를 return하게 했다.

나의 풀이

def solution(n):
    cnt2 = bin(n).count('1')
    while True:
        n+=1
        if cnt2 == bin(n).count('1'):
            return n

다른 사람의 풀이

from collections import Counter
def two_change(n):
    if n == 0: return ''
    elif n % 2 == 0: return two_change(n//2) + '0'
    else: return two_change(n//2) + '1'

def count_one(n):
    n = two_change(n)
    n = Counter(list(n))
    return n['1']

def solution(n):
    cnt = count_one(n)
    for i in range(n+1, 1000001): 
    # 1. n의 2진수시에 1의 갯수 확인 
        if cnt == (count_one(i)): return i 

0개의 댓글