728x90
▶ 문제
▶ 풀이방법
import java.util.*;
class Solution {
public int solution(int[] arr) {
int answer = 0;
Arrays.toString(arr);
//소수 판별
boolean[] ck = new boolean[101];
for(int i = 2; i < ck.length; i++){
for(int j = i*2; j < ck.length; j+=i){
if(ck[j] == true) continue;
ck[j] = true;
}
}
LinkedList<Integer> list = new LinkedList<>(); //곱해져야 할 값 list에 담기위함.
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]);
}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;
}else {
list.add(arr[i]);
arr[i] /= arr[i];
}
}
}
}
//모든 리스트에 있는 값 곱함
for(int l : list) {
if(answer == 0) answer += l;
else answer *=l;
}
return answer;
}
}
- 나는 위의 방식으로 풀었는데 다른사람들 풀이보면 gcd() 최대 공약수를 활용해서 풀었다,, 배우자배우자ㅏㅇ!!
728x90
'Algorithm > PROGRAMMERS[Java]' 카테고리의 다른 글
Lv2. N개의 최소공배수 (0) | 2022.06.18 |
---|---|
Lv1. 신고 결과 받기[카카오] (0) | 2022.05.02 |
Lv1. 로또의 최고순위와 최저순위 (0) | 2022.05.01 |
Lv1. 신규아이디 추천[카카오] (0) | 2022.05.01 |
Lv1. 숫자 문자열과 영단어[카카오] (0) | 2022.05.01 |