본문 바로가기
코딩 테스트

[프로그래머스] 이진 변환 반복하기 (Python)

by zoodi 2021. 3. 18.
728x90

🍒문제

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

 

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

 

programmers.co.kr

 

🍒풀이

 

1. after  : 0을 제거한 문자열

2. c = len(after)

3. res  : c를 2진법으로 변환한 수

4. s = res 로 갱신

 

위 1~3번 과정 반복 (s="1" 이 될 때 까지)

 

🍒코드

def solution(s):
    answer = []
    cnt = 0
    cnt_zero = 0

    while(True):
        if(s == "1"):
            break
        
        # 0 제거
        after = ''
        for i in s:
            if i == '0':
                cnt_zero += 1
                continue
            else:
                after += i
        #x의 길이 = c
        c = len(after)

        #c를 이진법으로 표현
        res = 0
        idx = 1

        while(c > 0):
            r = c % 2
            res += r * idx
            idx = idx * 10
            c = c//2

        s = str(res)
        #print(s, res)
        cnt += 1
        
        
    answer = [cnt, cnt_zero]
    return answer
728x90

댓글