반응형

문제 설명

두 수의 최소공배수(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

+ Recent posts