Python Coding Test
[프로그래머스/파이썬] Lv.0 1로 만들기
Be Delayed
2024. 4. 19. 22:41
문제 설명
정수는 짝수라면 반으로 나누고, 홀수라면 1을 뺀 뒤 반으로 나누다보면 1이 된다.
num_list : 정수들이 담긴 리스트
num_list의 모든 원소를 1로 만들기 위해 필요한 나누기 연산의 횟수를 return 하는 함수 완성하기
제한사항
- 3 ≤ num_list의 길이 ≤ 15
- 1 ≤ num_list의 원소 ≤ 30
입출력 예
num_list | result |
[12,4,15,1,14] | 11 |
입출력 예 설명
12는 3번, 4는 2번, 15는 3번, 1은 0번, 14는 3번의 연산이 필요하기 때문에 총 11번의 연산이 필요합니다.
나의 풀이
def solution(num_list):
answer = 0 # 1이 되기 위한 횟수
for i in num_list:
count = 0
while i > 1:
count += 1
if i % 2 == 0:
i = i/2
else:
i = (i-1) /2
answer += count
return answer
- while i > 1 : 값이 1보다 클 때만 시행하겠다는 뜻
- while문의 첫 줄이 count+=1 이므로 조건문을 돌고 다시 돌아오면 1이 추가됨에 따라 count 값 증가.
- 마지막 answer에 count의 값을 더해주면 나누기 연산의 횟수를 구할 수 있다.