def solution(n):
    answer = []
    num = 2
    
    while num <=n:
        if n % num ==0:
            answer.append(num)
            n = n // num
            
        else:
             num +=1
                
    return sorted(set(answer))

 

🤔 문제 풀이

  • 소인수분해니까, n 값이 다 분해될 때까지 반복해야 되잖아요
    • 그래서 while문으로 해보았어요
  • num = 2
    • 오늘 숫자의 공약수에는 1이 들어가 있으니까 2부터 시작했어요!
  • while num <=n:
            if n % num ==0:
                answer.append(num)
                n = n // num
    • num이 n보다 작거나 같을 때까지만 반복하도록 조건을 걸어줬어요
    • 만약 n에 num을 나눴을 때 나머지가 0이라면 소인수라는 의미니까 answer에 append 해줄게요
    • 그리고 n은 n을 num으로 나누었을 때 몫이 되는 값이에요
  • else:
             num +=1
    • 소인수가 아닐 경우 +1을 계속해주면서 while문을 종료해 나갈게요
  • return sorted(set(answer))
    • 그리고 중복값을 없애줄 set() 함수로 answer을 정리해 주고,
      • set() 함수는 순서를 보장해주지 않기 때문에 정렬 함수가 필요해요
    • sorted() 함수로 set(answer)을 정렬해 준 값을 return 해주면 문제 해결!

 


실패 흔적들 

1트

1트
def solution(n):
    answer = []
    num = 2
    
    while num <=n:
        if n % num ==0:
            answer.append(num)
            n = n // num
            
        else:
             num +=1
                
    return answer

 

제대로 잘 들어간 거 같긴 해요

근데 중복값이 생기네요 그래서 오류 난 거 같아요

그래서 answer에 있는 중복값들을 set() 함수를 써서 없애줬어요

근데 set() 함수는 중복값은 없애주지만, 순서를 보장해주진 않거든요 🤔

 

+ Recent posts