백준

백준 1934 - java

으엉어엉 2024. 9. 2. 20:14
728x90

문제

 

내풀이

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        for (int i = 0; i < N; i++) {
            int A = sc.nextInt();
            int B = sc.nextInt();

            int lcm = Math.min(A, B);
            while (true) {
                if (lcm % A == 0 && lcm % B == 0) {
                    System.out.println(lcm);
                    break;
                }
                lcm++;
            }
        }
    }
}

이렇게 풀었더니 실행 시간 오류가 떳다.  두 수 A와 B가 큰 수인 경우 lcm 값을 일일이 증가시키면서 A와 B로 나누어떨어지는지 확인하는 과정이 매우 오래 걸릴 수 있다. 특히 A와 B가 서로 소수인 경우, 이 과정은 최악의 경우 두 수의 곱까지 반복해야 할 수도 있다.

 

 

import java.util.Scanner;

public class LCM {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        for (int i = 0; i < N; i++) {
            int A = sc.nextInt();
            int B = sc.nextInt();

            int gcd = gcd(A, B);
            int lcm = (A / gcd) * B;
            System.out.println(lcm);
        }
    }

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

최소공배수를 구한다.

728x90

'백준' 카테고리의 다른 글

백준 1735 - Java  (0) 2024.09.02
백준 13241 - Java  (0) 2024.09.02
백준 11478 - Java  (0) 2024.09.02
백준 1269 - Java  (0) 2024.09.02
백준 10816 - Java  (0) 2024.08.30