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

yunu·2022년 4월 15일
0
post-thumbnail

출처: 프로그래머스 코딩 테스트 연습, [프로그래머스] 이진 변환 반복하기

풀이

1. 주어진 s 가 1이 될 때까지 반복문을 돌린다.
2. 한번 반복할 때마다 한번 이진변환을 해주기 때문에 count 1씩 추가해준다.
3. 정규표현식을 이용하여 문자열에서 0을 모두 빼준다.
4. 처음 문자열에서 0을 뺀 문자열을 빼서 문자열에서 1의 개수를 구한다.
5. bin() 을 문자열의 길이를 이진수로 만든다. 이 때 bin()은 앞에 0b을 붙여서 반환하기 때문에 빼줘야 한다.

코드

import re

def solution(s):
    count, count_zero = 0, 0
    while s != '1':
        count += 1
        new_s = re.sub('0', '', s)
        count_zero += len(s) - len(new_s)
        s = bin(len(new_s))[2:]
    
    return count, count_zero

def solution(s):
    count, count_zero = 0, 0
    while s != '1':
        count += 1
        count_one = s.count('1') # 정규표현식을 사용하지 않고 count()을 이용해서 푸는 것이 더 깔끔한 것 같다.
        count_zero += len(s) - count_one
        s = bin(count_one)[2:]
    
    return count, count_zero

느낀점

bin() 메서드 사용할 때 앞에 0b 붙어 반환되는 것 조심! 음수일 때는 -0b이 붙어서 반환된다.

profile
rip

0개의 댓글