동캄의 코딩도장

프로그래머스 level2 [이진 변환 반복하기] 파이썬 본문

코테/프로그래머스

프로그래머스 level2 [이진 변환 반복하기] 파이썬

동 캄 2021. 12. 6. 14:19

https://programmers.co.kr/learn/courses/30/lessons/70129

 

코딩테스트 연습 - 이진 변환 반복하기

 

programmers.co.kr

#프로그래머스 이진 변환 반복하기
def solution(s):
    s=list(map(str,s))
    leng=len(s)
    i=0
    zero_cnt=0
    cnt=0
    while True:
        while i<leng:
            if s[i]=='0':
                s.pop(i)
                leng-=1
                zero_cnt+=1
            else:
                i+=1
        cnt+=1
        if len(s)==1 and s[0]=='1':
            break
        else:
            a=bin(len(s))[2:]
            s=list(map(str,str(a)))
            leng=len(s)
            i=0
    answer=[cnt,zero_cnt]
    return answer

print(solution("110010101001"))

문제에서 주어진대로 먼저 이진변환을 하고, 종료 조건('1'만 남은상황)인지 확인한다.

그렇지 않다면, 길이를 이진수로 만들고 다시 반복한다.