본문 바로가기
Algorithm/프로그래머스

[프로그래머스] Lv2 - 이진 변환 반복하기 (파이썬)

by _temp 2022. 5. 4.
 

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

 

programmers.co.kr

 

def solution(s):
    answer = [0, 0]
    while s != '1':
        len_s = len(s)
        s = ''.join(s.split('0'))
        len_ns = len(s)
        s = bin(len(s))[2:]
        answer[0] += 1
        answer[1] += len_s - len_ns
    return answer

 

풀이
1. while문 (1이 될 때까지)
    - 0을 제거
    - 그 길이를 2진수로 바꿈
    - answer[0] : 횟수 += 1, answer[1] : 0 제거 횟수 += 1
2. answer 리턴

 

bin을 이용해서 이진수로 바꾸면 앞에 쓸모없는 문자열이 있어서 [2:] 슬라이싱을 해줘야 한다.

0을 제거할 때는 split을 이용하여 join 해주었다.