소인수분해
문제 설명
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 2 ≤ n ≤ 10,000
입출력 예 설명
입출력 예 #1
- 12를 소인수분해하면 2 * 2 * 3 입니다. 따라서 [2, 3]을 return합니다.
입출력 예 #2
- 17은 소수입니다. 따라서 [17]을 return 해야 합니다.
입출력 예 #3
- 420을 소인수분해하면 2 * 2 * 3 * 5 * 7 입니다. 따라서 [2, 3, 5, 7]을 return합니다.
내가 작성한 코드
def solution(n):
d = 2
factorization = []
while d <= n:
if n % d == 0:
if d not in factorization:
factorization.append(d)
n /= d
else:
d += 1
return factorization
-> 처음에는 중복을 제거하기 위해 list(set(factorization))을 사용했다. list(set(factorization))은 중복은 제거하지만 순서가 뒤섞여서, 정답과 순서가 다르면 오답 처리될 수 있다는 것을 알게 되었다.
다른 사람이 작성한 코드
def is_prime(n):
for i in range(2, int(n ** 0.5) + 1):
if not n % i:
return False
return True
def solution(n):
answer = []
for i in range(2, n + 1):
if not n % i and is_prime(i):
answer.append(i)
return answer
=> 앞에서 적용했던 에라토스테네스 방식으로 소수 판별 함수를 먼저 구현한것 같다. 알고는 있었지만 이번엔 이용해봐야지~ 했지만 적용 방법을 몰라서 다른 방법으로 도전했다.. 이제는 판별 함수를 어떻게 구현하고 어떻게 적용해야하는지 알것 같다.
회고
한 함수가 길어지는 것보다 하나의 함수를 만들어서 적용하는 것이 낫다. '코드는 읽기 쉽고, 재사용이 가능해야한다!'라는 기본적인 문장을 많이 들어봤을 것이다. 함수를 구현할 수 있다면 구현하는것이 좋다. 다음부턴 함수를 이용하기...메모..
참고 블로그
https://velog.io/@pric/프로그래머스파이썬-소인수분해-수학-Level-0
[프로그래머스][파이썬] 소인수분해 - 수학 (Level 0)
https://school.programmers.co.kr/learn/courses/30/lessons/120852소인수는 2부터 시작한다.소인수가 주어진 수가 될 때까지 반복하며 나누어 떨어지면 소인수이다.중복을 체크하여 answer 리스트에 담는다.더 나
velog.io
https://needneo.tistory.com/112
[Python] 파이썬, 소인수 분해하기
소인수분해(Prime Factorization)란 다들 알다시피 1보다 큰 자연수인 소인수(소수인 인수)들만의 곱으로 표현하는 것을 말한다. 소인수는 일단 1이라는 값이 아닌 2부터 시작하는 것이 핵심이며, 2로
needneo.tistory.com
'CodingTest > 프로그래머스 (미운영)' 카테고리의 다른 글
| [프로그래머스 Lv.0] 중복된 문자 제거 (0) | 2025.08.07 |
|---|---|
| [프로그래머스 Lv.0] 컨트롤 제트 (0) | 2025.08.07 |
| [프로그래머스 Lv.0] 모음 제거 (0) | 2025.08.01 |
| [프로그래머스 Lv.0] 팩토리얼 (0) | 2025.08.01 |
| [프로그래머스 Lv.0] 합성수 찾기 (4) | 2025.08.01 |