최대 1 분 소요

문제 링크

내 풀이

def solution(s):
    zero_count = 0
    times = 0
    while s != '1':
        zero_count += s.count('0')
        s = '1'* s.count('1')
        s = len(s)
        s = bin(s)[2:]
        times += 1
    return [times, zero_count]

다른 풀이

def solution(s):

    zero_count = 0 # 제거된 0의 개수를 저장할 변수
    change_count = 0 # 이진 변환의 횟수를 저장할 변수
    
    # s가 "1"이 될 때까지 반복
    while s != "1":
        
        # s에서 0의 개수를 세어 zero_count에 더하기
        zero_count += s.count("0")
        
        # s에서 1의 개수를 세고, 그 수를 2진법으로 변환한 후, 앞의 '0b'를 제거 후 s에 대입
        s = bin(s.count("1"))[2:]
        
        change_count += 1 # 이진 변환의 횟수를 증가
        
    # 이진 변환의 횟수와 제거된 0의 개수를 리스트로 반환
    return [change_count, zero_count]
출처: https://1ets-just-do-it.tistory.com/123 [파이썬은 신이야🔥🔥🔥:티스토리]

풀이 해석

  • 0과 1을 카운트하는 방식을 이용
  • 이진 변환 함수 bin을 사용
  • while 문을 이용

배울 점

  • 내 풀이와 매우 흡사함

댓글남기기