더북(TheBook)

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]
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.