티스토리 뷰

 

작성하면서 생각한 것은 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로 만들기 위해 필요한 최소한의 나누기 연산 횟수를 계산한 것 같다..

 

아직은 생각하기 어렵지만 꾸준히 해보자..!!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함