https://school.programmers.co.kr/learn/courses/30/lessons/12953
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
class Solution {
public int solution(int[] arr) {
int answer = 0;
if(arr.length == 1) return arr[0];
int g = gcd(arr[0], arr[1]);
answer = (arr[0] * arr[1]) / g;
if(arr.length > 2) {
for(int i = 2; i < arr.length; i++) {
g = gcd(answer, arr[i]);
answer = (answer * arr[i]) / g;
}
}
return answer;
}
//최대 공약수 구하는 함수
private static int gcd(int a, int b) {
int r = a % b;
if(r == 0) return b;
else return gcd(b, r);
}
}
/*
1. 원소가 한개면 그대로 반환
2. 원소 두 개일 때 최대 공약수와 최소 공배수를 구함
3. 3개 이상일 때 앞의 두 원소의 최소 공배수와 다음 원소의 최소 공배수를 구하며 배열의 끝까지 반복
※두 수 a와 b의 최소공배수는 a와 b의 곱을 a와 b의 최대공약수를 나눈 것과 같다는 성질을 가지고 있음
따라서 어떤 두 수의 최대공약수를 구한다면 최소공배수를 쉽게 구할 수 있는데 최대공약수를 구하기 위해 유클리드 호제법을 이용
*/'코딩테스트 > 코딩테스트 문제풀이' 카테고리의 다른 글
| [Java] 프로그래머스 <영어 끝말잇기> (0) | 2025.02.15 |
|---|---|
| [Java] 프로그래머스 <할인 행사> (0) | 2025.02.11 |
| [Java] 프로그래머스 <귤 고르기> (0) | 2025.02.09 |
| [Java] 프로그래머스 <K번째수> (0) | 2025.02.05 |
| [Java] 프로그래머스 <폰켓몬> (0) | 2025.02.05 |