Shiny Sky Blue Star

백준 문제 풀이/백준 (JAVA)

JAVA 백준 1934 최소공배수 (약수, 배수와 소수 2)

gamja00 2024. 7. 2. 00:18


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

 


문제

  1. 첫째 줄에 테스트 케이스의 개수 (1 <= T <= 1000)입력.
  2. 둘째 줄부터 T개의 줄에 걸쳐 A와 B가 주어짐 (1 <= A, B <= 45000).
  3. A와 B의 최소공배수를 입력받은 순서대로 한 줄에 하나씩 출력.

 

유클리드 호제법으로 최대공약수를 구한 후 두 수를 곱해 최대공약수로 나누면 최대공배수가 나온다.

 

완성 코드

import java.util.Scanner;

public class Main {
    public static int gcd(int a, int b) { //유클리드호제법
        while (b != 0) {
            int r = a % b;

            a = b;
            b = r;
        }

        return a;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int a, b, result;

        for (int i = 0; i < n; i++) {
            a = sc.nextInt();
            b = sc.nextInt();

            result = a * b / gcd(a, b);
            System.out.println(result);
        }
    }
}

 

bufferedStream을 쓰고 싶었는데 readline은 한 줄씩 받으니까 띄어쓰기 단위로 받는 방법을 모르겠어서 일단 스캐너를 썼다...


띄어쓰기 단위로 받는 방법을 찾아야겠다.