이것도 간단해 보이는 문제였지만, while문
을 쓸까 단순 함수 recursion
을 쓸까 고민하다가 함수 재귀를 사용하여 푼 문제이다.
def solution(s):
def turning(a, zero_count, r):
if a == '1':
return [r, zero_count]
else:
zero_count += a.count('0')
a = format(a.count('1'), 'b')
r += 1
return turning(a, zero_count, r)
answer = turning(s, 0, 0)
return answer
문제에서는 해당 문자열이 단순 '1'
로 바뀔 때까지 반복 실행해주라고 했으므로, 이외의 경우에는 계속 실행해주는 재귀 함수를 짜보았다. 굳이 문자열 '0'을 없애지 않고, 먼저 '0'
의 개수를 세어주고 더해주고, 단순히 '1'
의 개수만 파악해 주어진 문자열을 덮어씌어주고, 횟수 카운트를 늘려주고, 이를 다시 반복한다. 마지막에 주어진 문자열이 '1'
로 바꼈을 경우, 이제는 반복을 멈추고, 반복 횟수와 없어진 0의 개수를 리스트 형태로 반환시켜준다.
'알고리즘 테스트 > 프로그래머스 문제풀이 및 해설' 카테고리의 다른 글
<프로그래머스 문제풀이: [연습문제] JadenCase 문자열 만들기> Level 2 - 파이썬 (0) | 2020.12.24 |
---|---|
<프로그래머스 문제풀이: [연습문제] 최댓값과 최솟값> Level 2 - 파이썬 (0) | 2020.12.18 |
<프로그래머스 문제풀이: [연습문제] N개의 최소공배수> Level 2 - 파이썬 (0) | 2020.12.18 |
<프로그래머스 문제풀이: 소수 만들기> Level 2 - 파이썬 (0) | 2020.12.17 |
<프로그래머스 문제풀이: [연습문제] 최솟값 만들기> Level 2 - 파이썬 (0) | 2020.12.16 |