출처: 프로그래머스 코딩 테스트 연습, [프로그래머스] 이진 변환 반복하기
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
이 붙어서 반환된다.