https://www.acmicpc.net/problem/5347
[풀이]
- 최소공배수는 a * b / 최대공약수 인 점을 이용했습니다.
- 주어지는 수는 모두 백만보다 작거나 같아 int형으로 표현 가능하지만, 최소공배수의 경우에는 int형의 범위를 벗어나서 long형으로 표현해야 합니다.
- 이 long , int 형에 대한 주의를 한다면 풀 수 있습니다. 저 또한 이 부분을 놓쳐서, 처음에 틀렸습니다.
[코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static long gcd(int x, int y) {
if (x % y == 0)
return y;
return gcd(y, x % y);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringTokenizer st;
while (n-- > 0) {
st = new StringTokenizer(br.readLine(), " ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
System.out.println((long) a * b / gcd(a, b));
}
}
}
'Algorithm > 백준' 카테고리의 다른 글
백준 18290번 : NM과 K (1)(Java) (0) | 2021.09.20 |
---|---|
백준 16938번 : 캠프 준비(Java) (0) | 2021.09.20 |
백준 1037번 : 약수(Java) (0) | 2021.09.19 |
백준 1759번 : 암호 만들기(Java) (0) | 2021.09.19 |
백준 1057번 : 토너먼트(Java) (0) | 2021.09.18 |