이진수와 bin( ) : 다음 큰 숫자

solee·2022년 9월 19일
0

Python

목록 보기
11/16

https://school.programmers.co.kr/learn/courses/30/lessons/12911

이진수 가 보자~ 하고 시작했는데 생각보다 훨씬 빨리 풀렸다.
또 코드 생긴 게 꽤나 파이써닉하지 않을까 하고 혼자 기분이 좋아져서 기록한다.

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

간단하게 기준이 되는 n에서 1의 갯수를 카운트해 저장한다.
그리고 n에 +1을 해 가면서 다시 count("1")의 값이 일치하는지 비교하고, 일치할 때에 n을 리턴한다.

while True를 걸고 싶지는 않았는데, for문으로 범위를 지정하는 것보다 낫지 않을까 싶어서 그냥 넘어갔다.



이진수를 생각해 보면 "1"이 아니라 "0"이었다면 "0b10110"에서 맨 앞 0이 같이 카운트될테니 슬라이싱이 들어가게 될 것 같다.

효율성도 굿~!
SWEET~~~~~~~

profile
DA DA DA

0개의 댓글