2. ‘1’만 남을 때까지 변환 과정을 반복합니다.
먼저 전체 문자열에 1이 몇 개 있는지 가져오는 함수를 사용한 다음, 전체 문자열의 길이에서 해당 숫자를 뺀 남은 숫자에서 0이 있는 숫자를 가져오겠습니다. 전체에서 0이 몇 개 있는지 알아보려면 전체에서 1이 몇 개 있는지를 알고 그 수치만큼 빼면 되므로 이는 결국 같은 논리입니다.
while s != '1':
change += 1
num = s.count('1')
zero += len(s) - num
s = bin(num)[2:]
추가로 문자열에서 특정 단어가 몇 개 존재하는지 세는 방법은 직접 for 문을 사용해도 되지만, 여기에서는 자체적으로 제공하는 count() 함수를 사용하겠습니다. <전체 문자열>.count(<검색 규칙 문자열>) 형태로 사용하며, 전체 문자열에서 검색 문자열이 몇 번 등장하는지 알려줍니다.
전체 코드
4장/이진_변환_반복하기.py
def solution(s):
change, zero = 0, 0
while s != '1':
change += 1
num = s.count('1')
zero += len(s) - num
s = bin(num)[2:]
return [change, zero]