programmers- lv.2 (이진 변환 반복하기)

이예송·2023년 7월 28일

PS

목록 보기
63/97

문제링크: 이진 변환 반복하기

✍🏻 Information

content
언어python
난이도⭐️+0.5
풀이시간9분
제출횟수1
인터넷검색유무no




🍒 My Code

def solution(s):
    step, zeronum = 0,0
    while int(s)!=1:
        step+=1
        zeronum+=s.count("0")
        s = len(s.replace("0",""))
        binary = ""    
        while s>0:
            binary = str(s%2)+binary
            s = s//2
        s = binary
    return [step,zeronum]




💡 What I learned

  • bin 함수는 알고 있었지만 앞에 0b를 제거하기 까다로울까봐 직접 2진수를 구현하였는데 아래와같이 slicing 이용하면 됐다.
  • 그리고 replace한후 len 안구하고 1의 갯수를 count만 해줘도 됐다. -> 문제에 말한대로 그대로 구현하려하지말고 시간을 단축시킬 수 있는 방법을 생각해보자!
def solution(s):
    a, b = 0, 0
    while s != '1':
        a += 1
        num = s.count('1')
        b += len(s) - num
        s = bin(num)[2:]
    return [a, b]

0개의 댓글