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 조건이 이루어 질 때 까지 반복 한다.
'Programmers' 카테고리의 다른 글
[프로그래머스 / 파이썬 풀이] 예상 대진표 (0) | 2023.02.16 |
---|---|
[프로그래머스 / 파이썬 풀이] 영어 끝말잇기 (0) | 2023.02.15 |
[프로그래머스 / 파이썬 풀이] 멀리 뛰기 (0) | 2023.02.14 |
[프로그래머스 / 파이썬 풀이] 짝지어 제거하기 (0) | 2023.02.13 |
[프로그래머스 / 파이썬 풀이] 구명보트 (0) | 2023.02.13 |