반응형
문제 설명
두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.
제한 사항
- arr은 길이 1이상, 15이하인 배열입니다.
- arr의 원소는 100 이하인 자연수입니다.
입출력 예
arr | result |
[2,6,8,14] | 168 |
[1,2,3] | 6 |
나의 코드
import java.util.Arrays;
class Solution {
public int solution(int[] arr) {
Arrays.sort(arr);
int lcm = arr[0] * arr[1] / gcd(arr[0], arr[1]);
for (int i = 2; i < arr.length; i++) {
lcm = lcm * arr[i] / gcd(lcm, arr[i]);
}
return lcm;
}
public static int gcd(int small, int big) {
while (small != 0) {
int nmg = big % small;
big = small;
small = nmg;
}
return big;
}
}
다른사람 코드
// 문제가 개편 되었습니다. 이로 인해 함수 구성이 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
class NLCM {
public long nlcm(int[] num) {
long answer = num[0],g;
for(int i=1;i<num.length;i++){
g=gcd(answer,num[i]);
answer=g*(answer/g)*(num[i]/g);
}
return answer;
}
public long gcd(long a,long b){
if(a>b)
return (a%b==0)? b:gcd(b,a%b);
else
return (b%a==0)? a:gcd(a,b%a);
}
public static void main(String[] args) {
NLCM c = new NLCM();
int[] ex = { 2, 6, 8, 14 };
// 아래는 테스트로 출력해 보기 위한 코드입니다.
System.out.println(c.nlcm(ex));
}
}
반응형
'Algorithm Study > Programmers' 카테고리의 다른 글
타일 장식 / python (0) | 2020.03.06 |
---|---|
스킬트리/java (0) | 2019.08.28 |
피보나치 수 / java (0) | 2019.08.28 |
자연수 뒤집어 배열로 만들기/java (0) | 2019.08.28 |
약수의 합 / java (0) | 2019.08.28 |