🔍 문제
📊 분석
- 두 수 a와 b의 최소공배수는 a와 b의 곱을 a와 b의 최대공약수를 나눈 것과 같다는 성질을 가지고 있다.
- 두수의 최소공배수와 최대공배수는 유클리드 호제법을 이용하여 구할수있다.
- 배열의 원소들을 위성질을 이용하여 loop을 하면 최소공배수를 구할수있다.
✏️ 풀이
class Solution {
public int solution(int[] arr) {
int answer = 0;
if(arr.length == 1) return arr[0];
int tmp = gcd(arr[0],arr[1]); // 첫 2개 원소의 최대공약수
answer = (arr[0]*arr[1]) /tmp;// 첫 2개 원소의 최소공배수
/*
원소의 개수가 3개 이상인 경우
앞의 두 원소의 최소 공배수와 다음 원소의 최소 공배수를 구하며
배열의 끝까지 반복
*/
if(arr.length >2){
for(int i = 2; i < arr.length; i++){
tmp = gcd(answer, arr[i]);
answer = (answer * arr[i]) / tmp;
}
}
return answer;
}
public static int gcd(int a, int b){
int r = a % b;
if(r == 0) return b;
else return gcd(b, r);
}
}
'알고리즘 문제 연습' 카테고리의 다른 글
[프로그래머스] JadenCase 문자열 (5) | 2024.10.07 |
---|---|
[프로그래머스] 바탕화면 정리 (0) | 2024.10.04 |
[프로그래머스] 성격 유형 검사하기 (0) | 2024.09.30 |
[프로그래머스] 숫자 짝꿍 (0) | 2024.09.20 |
[프로그래머스] 옹알이(2) (0) | 2024.09.03 |