본문 바로가기

Algorithms/Programmers

Level 3 - N개의 최소공배수

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. nlcm 함수를 통해 n개의 숫자가 입력되었을 때, 최소공배수를 반환해 주세요. 예를들어 [2,6,8,14] 가 입력된다면 168을 반환해 주면 됩니다.


풀이


import java.util.Arrays;

class NLCM {
    public long nlcm(int[] num) {
        long answer = 0;
    long[] longNum = Arrays.stream(num).mapToLong(i -> (long)i).toArray();
    for (int i = 0; i < num.length-1; i++){
        if (longNum[i] <= longNum[i+1]){
            long temp = longNum[i];
            longNum[i] = longNum[i+1];
            longNum[i+1] = temp;
        }
        long lcm = longNum[i] * longNum[i+1] / gcd(longNum[i], longNum[i+1]);
        longNum[i+1] = lcm;
    }
    answer = longNum[longNum.length -1];
        return answer;
    }

  private long gcd(long a, long b){
    if ( b== 0) return a;
    return gcd(b, a%b);
  }

    public static void main(String[] args) {
        NLCM c = new NLCM();
        int[] ex = { 2, 6, 8, 14 };
        // 아래는 테스트로 출력해 보기 위한 코드입니다.
        System.out.println(c.nlcm(ex));
    }
}


'Algorithms > Programmers' 카테고리의 다른 글

Level 4- 땅따먹기 게임  (1) 2018.03.23
Level 4 - 숫자의 표현  (0) 2018.03.09
Level 3 - 다음 큰 숫자  (0) 2018.02.28
Level 3 - 야근지수  (0) 2018.02.28
Level 3 - 멀리 뛰기  (0) 2018.02.28