Algorithm/PROGRAMMERS[Java]
Lv1. N개의 최소공배수
씨니
2022. 5. 2. 15:00
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