[백준/JAVA] 1934번 최소공배수

정은아·2024년 2월 1일

[알고리즘] 수학 모음

목록 보기
20/152
post-thumbnail

내 풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {

        // 최소 공배수 구하는 문제

        // for문을 돌려서 A와 B를 받는다.
        // 다시 for문을 돌려서 A와 B의 공통약수를 구하고 A와B를 j로 나눈다.
        // 그리고 공통약수는 중첩해서 곱해둔다.
        // 공통약수 * 나눈 A * 나눈 B를 출력한다.

        Scanner sc = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();

        int num = sc.nextInt();

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

            for (int j = Math.max(A,B); j > 1; j--) {
                if (A % j == 0 && B % j == 0) {
                    A /= j ;
                    B /= j ;
                    answer *= j;
                }
            }

            answer *= A * B;
            sb.append(answer);
            sb.append("\n");
        }

        System.out.println(sb.toString());
    }
}

느낀점

손으로 종이에 최소공배수 구하는건 참 쉬운데.. 코드로 구현하려니까 조금 어렵다..
Set으로도 설계해보고, 배열로도 설계하다가 너무 어렵게 구현하는것 같아 고민을 좀 많이 한 문제다. 간단하게 풀어 기분이 좋다.

profile
꾸준함의 가치를 믿는 개발자

0개의 댓글