문제링크
1934번: 최소공배수
두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있
www.acmicpc.net
문제풀이
// 최대공약수 * 최소공배수 = 두 자연수의 곱
// 최소공배수 = 두 자연수의 곱 / 최대 공약수
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
ArrayList<Integer> answer = new ArrayList<>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int tCase = Integer.parseInt(br.readLine());
for (int i = 0; i < tCase; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int num1 = Integer.parseInt(st.nextToken());
int num2 = Integer.parseInt(st.nextToken());
int gcd = GCD(num1, num2);
answer.add((num1*num2)/gcd);
}
for (int i = 0; i < answer.size(); i++) {
System.out.println(answer.get(i));
}
}
public static int GCD(int num1, int num2) {
if (num1 % num2 == 0) {
return num2;
}
return GCD(num2, num1 % num2);
}
}
※ 핵심
최소공배수 * 최대공약수 = 두 수의 곱
최대공약수의 경우, 유클리드 호제법으로 계산
'코딩테스트 > 백준' 카테고리의 다른 글
| [JAVA] 2579번 계단 오르기 (0) | 2023.08.22 |
|---|---|
| [JAVA] 10845번 큐 (0) | 2023.08.04 |
| [JAVA] 1018번 체스판 다시 칠하기 (0) | 2023.07.18 |
| [JAVA] 2908번 상수 (0) | 2023.02.12 |
| [Python] 2798번 블랙 잭 (0) | 2022.02.05 |