Programmers

[프로그래머스 / 파이썬 풀이] 이진 변환 반복하기

Hoo_Dev 2023. 2. 14. 10:34
def solution(s):
    global answer
    answer = [0, 0]
    first_arr = list(s)
    first_arr = list(map(int, s))
    answer[1] = len(first_arr) - sum(first_arr) 
    
    def binary(n):
        global answer
        arr = []
        while n >= 1:
            next_n = n % 2
            arr.append(next_n)
            n //= 2
        answer[1] += len(arr) - sum(arr)
        return arr
      
    while True:
        if len(first_arr) == 1 and sum(first_arr) == 1:
            return answer
        
        next_arr = binary(sum(first_arr))
        answer[0] += 1
        
        first_arr = list(map(int, next_arr))
        
    return answer

1. 첫 번째 배열을 정수화 시킨다.

2. 정수화 시킨 배열의 사라진 0 을 구하기 위해 (전체 배열의 수 - 1의 개수) 를 해준 후 정답 배열에 넣는다.

3. while문을 통해 해당 숫자를 다시 이진 배열로 만들어준다.

4. 만들어준 배열을 정수화 시키고, return 조건이 이루어 질 때 까지 반복 한다.