728x90
▶ 문제
▶ 풀이방법
import java.util.*;
class Solution {
public int solution(int[] arr) {
int answer = 1;
Arrays.sort(arr);
//소수판별 - 에라토스테네스의 체
boolean[] ck = new boolean[101];
for(int i = 2; i < ck.length; i++) {
for(int j = i*i; j < ck.length; j += i) {
if(ck[j] == false) ck[j] = true; //소수가 아니라면 true
}
}
ArrayList<Integer> list = new ArrayList<>(); //배열 내 수들의 소수저장.
for(int i = 0; i < arr.length; i++) {
for(int l : list) {
if(arr[i] % l == 0) arr[i] /= l;
}
if(ck[arr[i]] == false) { //소수일 경우
list.add(arr[i]); //list에 저장
}else {
while(arr[i] > 1) {
if(arr[i] % 2 == 0) {
list.add(2);
arr[i] /= 2;
}else if(arr[i] % 3 == 0) {
list.add(3);
arr[i] /= 3;
}else if(arr[i] % 5 == 0) {
list.add(5);
arr[i] /= 5;
}else if(arr[i] % 7 == 0) {
list.add(7);
arr[i] /= 7;
}
}
}
}
for(int l : list) { //list에 저장된 수들의 곱
answer *= l;
}
return answer;
}
}
728x90
'Algorithm > PROGRAMMERS[Java]' 카테고리의 다른 글
Lv1. N개의 최소공배수 (0) | 2022.05.02 |
---|---|
Lv1. 신고 결과 받기[카카오] (0) | 2022.05.02 |
Lv1. 로또의 최고순위와 최저순위 (0) | 2022.05.01 |
Lv1. 신규아이디 추천[카카오] (0) | 2022.05.01 |
Lv1. 숫자 문자열과 영단어[카카오] (0) | 2022.05.01 |