알고리즘/문제풀이

[프로그래머스] 11053 N개의 최소공배수 - JAVA

LIRI 2025. 5. 11. 23:12

[프로그래머스] 11053 N개의 최소공배수 - JAVA

문제

https://www.acmicpc.net/problem/14939

문제 분석

조건

  • `arr`: 길이 1 이상 15 이하의 정수 배열
  • 각 원소는 1 이상 100 이하의 자연수
  • 배열에 주어진 모든 수의 최소공배수를 구해라

풀이방법

  • 두 수의 최소공배수는 아래 공식을 사용해서 구할 수 있다.
    • `LCM(a, b) = (a * b) / GCD(a, b)`
  •  GCD는 유클리드 호제법으로 구할 수 있음
  • 배열의 최소공배수는 순차적으로 두 수씩 계산해 나가면 된다

코드

class Solution {
    public int solution(int[] arr) {
        int answer = 1;
        int size = arr.length;
        for (int i = 0; i < size; i++) {
            answer = (answer * arr[i]) / gcd(answer, arr[i]);
        }
        return answer;
    }

    private int gcd(int a, int b) {
        while (b != 0) {
            int temp = a % b;
            a = b;
            b = temp;
        }
        return a;
    }
}

 

728x90