본문 바로가기

프로그래머스

프로그래머스 '이진 변환 반복하기' 문제풀이(PYTHON) - Henry's Algorithm

반응형


안녕하세요 Henry 입니다

오늘은 이진 변환 반복하기 라는 문제를 풀어보았습니다.
프로그래머스에서 Level 별로 문제 난이도가 정해져 있는데,
이 문제는 Level 2에 속해있는 문제입니다.

먼저 이진 변환하는 방법을 알아야 하고,
숫자로 되어있는 문자열에서 0을 제거하는 방법을 알아야 합니다.

저는 문자열을 리스트로 변환해서 문제를 풀었는데,
또 0과 1만 이루어져 있기 때문에, 값을 모두 더하는 것을 1의 개수로 보는 것도 참 좋은 방법일 것 같습니다.

아래는 제가 푼 소스입니다.
코드 보시면서 도움이 되시길 바랍니다ㅎㅎ

from typing import List

def solution(s: str) -> List[int]:
    zero_count_list = list()
    while True:
        ls = list(s)
        zero_count_list.append(sorted(ls).index('1'))
        value = len(ls) - zero_count_list[-1]
        s: str = binary_tranform(value)
        if s == '1':
            break
            
    return [len(zero_count_list), sum(zero_count_list)]



def binary_tranform(value: int) -> str:
    remainder_string = ''
    while True:
        value, remainder = divmod(value, 2)
        remainder_string = str(remainder) + remainder_string
        if value == 0:
            break
    return remainder_string


아래는 문제 풀이 영상입니다.
https://youtu.be/YdVfhz1WSl4

 

- YouTube

 

www.youtube.com

 

반응형