본문 바로가기

코딩테스트/백준

[JAVA] 1934번 최소공배수

문제링크

 

1934번: 최소공배수

두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있

www.acmicpc.net

문제풀이

// 최대공약수 * 최소공배수 = 두 자연수의 곱
// 최소공배수 = 두 자연수의 곱 / 최대 공약수

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        ArrayList<Integer> answer = new ArrayList<>();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int tCase = Integer.parseInt(br.readLine());

        for (int i = 0;  i < tCase; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int num1 = Integer.parseInt(st.nextToken());
            int num2 = Integer.parseInt(st.nextToken());

            int gcd = GCD(num1, num2);
            answer.add((num1*num2)/gcd);
        }

        for (int i = 0; i < answer.size(); i++) {
            System.out.println(answer.get(i));
        }
        
    }

    public static int GCD(int num1, int num2) {
        if (num1 % num2 == 0) {
            return num2;
        }
        return GCD(num2, num1 % num2);
    }
}

 

※ 핵심

최소공배수 * 최대공약수 = 두 수의 곱

최대공약수의 경우, 유클리드 호제법으로 계산

'코딩테스트 > 백준' 카테고리의 다른 글

[JAVA] 2579번 계단 오르기  (0) 2023.08.22
[JAVA] 10845번 큐  (0) 2023.08.04
[JAVA] 1018번 체스판 다시 칠하기  (0) 2023.07.18
[JAVA] 2908번 상수  (0) 2023.02.12
[Python] 2798번 블랙 잭  (0) 2022.02.05