# 문제
https://www.acmicpc.net/problem/1934
1934번: 최소공배수
두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있
www.acmicpc.net
# 풀이 과정
- 두 자연수의 곱 = 최소 공배수 * 최대 공약수
- MOD 연산으로 최대 공약수를 구해서 최소 공배수를 구한다
static long euclidean(long a, long b) {
//1.두 수의 나머지 값을 구한다
long rest = a % b;
//2. 나머지 값이 0이 될 때까지 아래의 연산을 반복한다
while(rest != 0) {
long save = rest;
rest = b % rest;
b = save;
}
return b;
}
1. 큰 수(a)를 작은 수(b)로 나눈 나머지(rest)를 구한다
2. 1단계에서의 작은 수를 앞 단계에서 구한 나머지 값으로 나눈 나머지를 구한다
- rest = b % rest
3. 나머지가 0이 될 때까지 반복하고 0이 됐을 때 작은 수가 최대공약수가 된다
# 전체 코드
더보기
import java.util.Scanner;
public class Main {
static int euclidean(int a, int b) {
int rest = a % b;
while(rest != 0) {
int save = rest;
rest = b % rest;
b = save;
}
return b;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
//테스트 케이스의 수
int T = sc.nextInt();
for(int i = 0; i < T; i++) {
int A = sc.nextInt();
int B = sc.nextInt();
int gcd = 0;
if(A > B) gcd = euclidean(A, B);
else gcd = euclidean(B, A);
int mul = A * B;
sb.append((mul/gcd) + "\n");
}
System.out.println(sb);
}
}
# 결과

'Coding Test > BaekJoon - Java' 카테고리의 다른 글
| [백준(BaekJoon)] 1976 : 여행 가자 - JAVA(자바) (0) | 2023.10.08 |
|---|---|
| [백준(BaekJoon)] 1717 : 집합의 표현 - JAVA(자바) (0) | 2023.10.08 |
| [백준(BaekJoon)] 1850 : 최대공약수 - JAVA(자바) (0) | 2023.09.27 |
| [백준(BaekJoon)] 18352 : 특정 거리의 도시 찾기 - JAVA(자바) (0) | 2023.09.26 |
| [백준(BaekJoon)] 1920 : 수 찾기 - JAVA(자바) (0) | 2023.09.25 |