코테/백준

[백준/JAVA] 5347번: LCM

imname1am 2023. 6. 10. 13:39
반응형

🔺 문제

 

5347번: LCM

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

www.acmicpc.net

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.*;
import java.io.*;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        long n = Long.parseLong(br.readLine());
        
        while(n --> 0) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
 
            long a = Long.parseLong(st.nextToken());
            long b = Long.parseLong(st.nextToken());
            
            long d = a * b / gcd(a,b);
            sb.append(d).append("\n");
        }
        System.out.print(sb);
    }
    
    private static long gcd(long x, long y) {
        if(y == 0)  return x;
        return gcd(y, x % y);
    }
}
cs
✅ 해결 아이디어
✔ 최소공배수 (LCM) =  a * b / 최대공약수(GCD)
- 최대공약수 → 유클리드 호제법 사용해 계산

 

💥 유의사항

• long형으로 받아야함 ⇨ ∵ 백만 * 백만 → int형 범위 넘음

 

 


💬 느낀 점

수 범위가 넘어가는 걸 잘 생각하자!

유클리드 호제법 오랜만에 생각하려니까 까먹음..ㅠ

 

 

1회독 2회독 3회독 4회독 5회독
V        
반응형