https://school.programmers.co.kr/learn/courses/30/lessons/120852
Algorithm
Idea
2부터 숫자를 늘려가며 나누어본다. 나누어지면 해당 숫자를 소인수분해 숫자 목록에 추가하고, 나누어지지않으면 1을 늘려 다음숫자로 나누어본다.
+) Java에는 LinkedHashSet이라는 것이 있어 중복을 허용하지않고 순서까지 보장해 준다!
Python
def solution(n):
answer = []
d = 2
while d <= n:
if n % d == 0:
n /= d
if d not in answer:
answer.append(d)
else:
d += 1
return answer
Java
import java.util.LinkedHashSet;
class Solution {
public int[] solution(int n) {
LinkedHashSet<Integer> primeNumbers = new LinkedHashSet<>();
int i = 2;
while (n != 0 && i <= n) {
if (n % i == 0) {
primeNumbers.add(i);
n /= i;
} else {
i++;
}
}
// System.out.println(primeNumbers);
return primeNumbers.stream().mapToInt(Integer::intValue).toArray();
}
}
'자료구조&알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers] 직사각형 넓이 구하기 (PYTHON, JAVA) (2) | 2024.03.31 |
---|---|
[Programmers] 직사각형 넓이 구하기 (PYTHON, JAVA) (0) | 2024.03.31 |
[Programmers] 조건에 맞게 수열 변환하기 2 (JAVA, PYTHON) (0) | 2023.11.29 |
[Programmers] 점프와 순간 이동 (JAVA, PYTHON) (0) | 2023.11.03 |
[Programmers] 영어 끝말잇기 (JAVA, PYTHON) (1) | 2023.11.03 |