연습장
4. 이진 변환 반복하기 본문
0111010 -> 0 제거 -> 1111 -> 길이(4) 를 2진법으로 표현 -> 100 -> 0 제거 -> 1 -> 종료
[반복횟수, 제거된 0의 갯수] 를 반환
== [2, 5]
문자열 s 에 대해서
before_len : 처음 문자의 길이
replace : 0 제거
after_len: 0이 제거된 후 문자의 길이
제거된 0의 갯수 : before_len - after_len
s = after_len 을 2진법으로 바꾼 숫자의 문자형
다시 반복.
2진법으로 바꾸는 방법
bin , format 중에 format 을 사용함.
value = 60
print(bin(value), type(bin(value))) # 0b111100 <class 'str'>
print(format(value, 'b'), type(format(value, 'b'))) # 111100 <class 'str'>
def solution(s):
answer = [0,0]
# 반복
while True :
answer[0] += 1
before_len = len(s)
s = s.replace('0','')
after_len = len(s)
answer[1] += before_len - after_len
s = format(after_len, "b")
if s == '1':
break
return answer