본문 바로가기
개발/문제풀이

프로그래머스 '소인수분해' 파이썬 풀이

by beomcoder 2023. 2. 16.
728x90
반응형
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

"""
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 
예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 
따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 
n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
"""

def solution(n):
    result = []
    divide_num = 2
    while n!=1:
        if n%divide_num == 0:
            n/= divide_num
            result.append(divide_num)
        else:
            divide_num += 1
        
    return sorted(set(result))
 
 """
 나눠서 0이 되면 약수이기 때문에 저장한다는 생각으로 코드를 짰다.
 약수라면 result에 추가하고 n을 divide_num으로 나누었다.
 
 4라고 가정한다면 2로 한번 나누어도 2이기 때문에
 더이상 divide_num으로 나누어지지 않을때까지 반복해야 한다.
 
 약수가 아니라면 다음수로 증가시켜주었다.
 
 17이라면 divide_num이 계속 else로 들어가서 증가하다가
 17에 if문에 들어가서 나누면 n이 1이 되어 while문을 빠져나온다.
 
 다 계산하고 중복된 값을 빼고 오름차순으로 리턴해줘야 한다.
 set함수로 중복을 지우고 sorted로 소트해주어 리턴해줬다.
 """
728x90
반응형

댓글