본인은 우선 약수의 개수에 대한 배열을 하나 파놓고 시작했다.
1. 제일 큰 수 구하기
2. 제일 큰 수의 크기를 가지는 배열 생성한 후, 요소값 0으로 선언 -> divArr
-> 이 배열이 약수의 개수를 구해줌 ex) 인덱스가 2인 값은 2로 얼마나 나눠지는지에 대한 값
3. 입력값 arr 을 하나씩 체크
-> arr 이 나누려는 값으로 얼만큼 나눠지는지 count 값을 구한 후, 그 count를 divArr의 개수와 비교해서 크다면 이걸로 바꿈
4. 마지막에 이 약수의 개수를 가지고, 인덱스를 그 값만큼 곱해서 답을 구함
-> 예를 들어 인덱스 3값에 4개이다. answer에 3을 4번 곱한다는 뜻
function solution(arr) {
var answer = 1;
var maxNum = Math.max(...arr);
var divArr = new Array(maxNum+1).fill(0);
// 최대 약수 구하기
for(var arrIndex = 0;arrIndex<arr.length;arrIndex++){
for(var i = 2; i<=arr[arrIndex];i++){
var divCount = 0;
while(true){
if(arr[arrIndex]%i===0){
arr[arrIndex] = arr[arrIndex] / i;
divCount++
}
else{
if(divCount>divArr[i]) divArr[i] = divCount;
break;
}
}
}
}
//구한 약수 최소공배수에 곱하기
for(var i =1;i<divArr.length;i++){
for(var mul = 0; mul<divArr[i];mul++){
answer *= i;
}
}
return answer;
}