[프로그래머스/Java] N개의 최소공배수

Yujin·2025년 6월 18일

CodingTest

목록 보기
40/51

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12953


My Solution

  • 배열의 첫 번째 원소부터 순차적으로 두 수씩 계산하여 최소공배수를 구함
  • 두 수의 최소공배수는 arr[i+1] = (arr[i] * arr[i+1]) / getGCD(arr[i], arr[i+1])로 구함
  • 마지막 계산된 값이 배열의 모든 원소의 최소공배수
  • getGCD 함수는 유클리드 호제법을 사용하여 두 수의 최대공약수를 재귀적으로 구함

나의 코드

import java.util.*;

class Solution {
    public int solution(int[] arr) {
        Arrays.sort(arr); // 배열을 오름차순 정렬
        
        // 반복문을 통해 배열의 최소공배수를 구함
        for (int i = 0; i < arr.length - 1; i++) {
            // 두 수의 최대공약수 구하기
            int gcd = getGCD(arr[i+1], arr[i]);
            // 두 수의 최소공배수를 계산
            arr[i+1] = (arr[i] * arr[i+1]) / gcd;
        }
        
        // 최종적으로 계산된 최소공배수를 반환
        return arr[arr.length - 1];
    }

    // 유클리드 호제법을 사용하여 최대공약수(GCD) 구하는 함수
    public static int getGCD(int n1, int n2) {
        if (n1 % n2 == 0) {
            return n2;
        }
        return getGCD(n2, n1 % n2);
    }
}

0개의 댓글