반응형
문제 설명
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 2 ≤ n ≤ 10,000
입출력 예nresult
n | result |
12 | [2 , 3 ] |
17 | [17] |
420 | [2,3,5,7] |
입출력 예 설명
입출력 예 #1
- 12를 소인수분해하면 2 * 2 * 3 입니다. 따라서 [2, 3]을 return합니다.
입출력 예 #2
- 17은 소수입니다. 따라서 [17]을 return 해야 합니다.
입출력 예 #3
- 420을 소인수분해하면 2 * 2 * 3 * 5 * 7 입니다. 따라서 [2, 3, 5, 7]을 return합니다.
정답 코드
// 주어진 숫자 n 을 소인수 분해
// 중복된 값 제거
// 오름 차순 정리
func solution(n int) []int {
soinsu := []int{}
elements := 2
// divisor * divisor <= n이 참일 동안 반복
// 이는 divisor가 n의 제곱근보다 작거나 같을 때까지 반복하는 것
for elements*elements <= n {
if n%elements == 0 {
soinsu = append(soinsu, elements)
for n%elements == 0 {
n /= elements
}
}
elements++
}
// n 이 1보다 크면 마지막 소수인 경우
if n > 1 {
soinsu = append(soinsu, n)
}
return soinsu
}
문제 해결 능력이 중요한거 같습니다.
반응형
'Computer language and framework > GO' 카테고리의 다른 글
[GO] 프로그래머스 > 코딩테스트 입문 > 369 게임 (0) | 2024.10.26 |
---|---|
[GO] 프로그래머스 > 코딩테스트 입문 > 가까운 수 (0) | 2024.10.26 |
[GO] 프로그래머스 > 코딩 테스트 입문 > LV.0 문자열 겹쳐쓰기 (0) | 2024.10.22 |
[GO] 프로그래머스 > 코딩 테스트 입문 > LV.0 컨트롤 제트 문제 (0) | 2024.10.22 |
[GO] graceful shutdown 이란? (0) | 2023.02.20 |