알고리즘 문제풀이/백준

[백준 5347] LCM (최소공배수)

taemin 2021. 5. 7.

www.acmicpc.net/problem/5347

 

5347번: LCM

첫째 줄에 테스트 케이스의 개수 n이 주어진다. 다음 n개 줄에는 a와 b가 주어진다. a와 b사이에는 공백이 하나 이상 있다. 두 수는 백만보다 작거나 같은 자연수이다.

www.acmicpc.net

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BJ5347 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        for (int i = 0; i < n; i++) {
            String[] sList = br.readLine().split(" ");
            int a = Integer.parseInt(sList[0]);
            int b = Integer.parseInt(sList[1]);

            long answer = Lcm(a, b);

            System.out.println(answer);

        }


    }

    private static long Lcm(int a, int b) {
        long big,small;

        if(a>b){
            big = a;
            small = b;
        } else{
            big = b;
            small = a;
        }

        long gcd = Gcd(big, small);
        long lcm = (big * small) / gcd;

        return lcm;
    }

    private static long Gcd(long big, long small) {

        if (big % small == 0) {
            return small;
        }
        return Gcd(small, big % small);

    }
}

풀이

N,M 의 최소공배수를 구하려면 먼저

 

최대공약수를 유클리드 호제법을 통해 구한다.

 

최소공배수 = N*M / 최대공약수 이다

 

최대공약수를 구하는 식은 하나정도 정해서 암기해 두는 것이 좋다.

 

.

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 1013] Contact  (0) 2021.05.07
[백준 2257] 화학식량  (0) 2021.05.07
[백준 10610] 30  (0) 2021.05.05
[백준1238] 파티  (0) 2021.05.05
[백준14465] 소가 길을 건너간 이유 5  (0) 2021.05.05

댓글