티스토리 뷰
작성하면서 생각한 것은 num_list에서도 하나씩 반복해야하고 한 값에서도 반복을 해서 1이 될때까지 몇 번 나누기를 사용했는지 알아야하기 때문에 반복문을 2번을 사용해야한다.
num_list 각 인덱스 반복은 for를 사용하고 하나의 값을 1로 만들때까지의 반복은 while을 사용했다.
확실히 참이면 계속 반복을 하는 것은 while이 편한 것 같다! 처음에 for를 두 번 사용할까 했는데 나에게는 조금 어려웠다.
<내가 쓴 코드>
def solution(num_list):
answer = 0
for i in range(len(num_list)): #num_list를 반복하자!!
while num_list[i] != 1: #num_list[i]이 1이 아니라면 계속 반복하자
if num_list[i]%2==0: #num_list[i]가 짝수라면
num_list[i] = num_list[i]/2 #2로 나눠라
answer += 1 #한번 나눴으니 1을 answer에 더해주자!
else : #num_list[i]가 홀수라면
num_list[i] = (num_list[i]-1)/2 #1을 빼고 2로 나눠라
answer += 1 #이번에도 한번 나눴으니 1을 answer에 더해주자!
return answer
다른 사람들의 풀이를 보니 나랑 비슷한 풀이 중에 간편한 것은..
for문에서 아예 그 값을 가져오는 것이다 나는 반복할 때 num_list의 길이를 range로 하나씩 가져왔는데...
def solution(num_list):
answer = 0 #초기에 answer 변수를 0으로 설정
for n in num_list: #아예 num_list의 숫자를 가져온다.
while n != 1: #n이 1이 될 때까지 반복한다.
n //= 2 #n을 2로 나눈다(처음 안 사실이다..)
answer += 1 #한 번 나눌 때마다 1을 더한다..
return answer
나는 하나하나 다 생각해주면서 해줬는데 이 분은 그냥 각 숫자를 1로 만들기 위해 필요한 최소한의 나누기 연산 횟수를 계산한 것 같다..
아직은 생각하기 어렵지만 꾸준히 해보자..!!
'Programmers > 코딩 기초 트레이닝' 카테고리의 다른 글
[프로그래머스] 간단한 논리 연산 (0) | 2024.02.19 |
---|---|
[프로그래머스] 배열 만들기 4 (0) | 2024.02.19 |
[프로그래머스] qr code (1) | 2024.02.15 |
[프로그래머스] 리스트 자르기 (0) | 2024.02.15 |
[프로그래머스] 수열과 구간 쿼리 4 (0) | 2024.02.15 |