두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.
제한 사항
arr은 길이 1이상, 15이하인 배열입니다.
arr의 원소는 100 이하인 자연수입니다.
입출력 예
[간단 설명]
n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환
[접근 방법]
배열을 정렬하여 가장 큰 값을max로 설정 (배열 내 최댓값 찾기).
max가 1이면 그대로 반환 (배열 전체가 1로만 이루어진 경우).
num = 2부터 시작하여 배열을 반복하면서 공통된 약수를 찾음.
배열을 순회하며num으로 나누어 떨어지는 값이 있으면answer에num을 곱함.
나누어 떨어진 숫자는arr[i] / num으로 업데이트하여 공통 약수를 제거함.
배열 내에서num으로 나누어 떨어지는 값이 하나도 없으면num++.
num이max까지 반복하여 공통된 약수를 모두 찾아answer에 곱해줌.
반복문이 끝난 후 배열에 남아 있는 값들을answer에 곱하여 반환.
[소스 코드]
import java.util.Arrays;
class Solution {
public int solution(int[] arr) {
int answer = 1;
int num = 2;
Arrays.sort(arr);
int max = arr[arr.length -1];
if(max == 1) return max;
while(max >= num){
boolean bool = false;
for(int i = 0 ; i < arr.length ; i++){
if(arr[i] % num == 0){
arr[i] = arr[i]/num;
bool = true;
}
}
if(bool) answer *= num;
else num++;
}
for(int i = 0 ; i < arr.length ; i++){
answer *= arr[i];
}
return answer;
}
}