[JAVA/프로그래머스] 연습문제: N개의 최소공배수

👀 문제

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

👊 도전

1. 설계

  1. LCM(a,b)=a*b/GCD(a,b)이다.
  2. answer에 현재까지의 lcm을 저장하고, answer=lcm(answer, arr[i]) 방식으로 구현한다.

2. 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.*;
/**
 *
 * @author HEESOO
 *
 */
class Solution {
    public int solution(int[] arr) {
        int answer = arr[0];
        Arrays.sort(arr); 
        for(int i=1;i<arr.length;i++){
            answer=lcm(arr[i], answer);
        }
        return answer;
    }
    
    public int gcd(int a, int b){
        if(a%b==0) return b;
        else return gcd(b, a%b);
    }
    
    public int lcm(int a, int b){
        return a*b/gcd(a,b);
    }
}

3. 결과

실행결과 🤟 성공 🤟

4. 설명

  1. answer=LCM(answer, arr[i]) 방식으로 답을 찾는다
    • answer을 arr[0]으로 초기화하고, i=1부터 탐색한다.
    • gcd(a, b)에서 파라미터 a>b이어야 하기 때문에 Array.sort()로 오름차순으로 정렬하였다.

👏 해결 완료!