문제 링크 : https://www.acmicpc.net/problem/13241
문제
정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다.
예:
입력
한 줄에 두 정수 A와 B가 공백으로 분리되어 주어진다.
50%의 입력 중 A와 B는 1000(103)보다 작다. 다른 50%의 입력은 1000보다 크고 100000000(108)보다 작다.
추가: 큰 수 입력에 대하여 변수를 64비트 정수로 선언하시오. C/C++에서는 long long int를 사용하고, Java에서는 long을 사용하시오.
포인트
AXB/최대공약수(r) = 최소공배수 공식 사용하기
최소공배수 결과가 int형으로 부족할 수 있으므로 결과는 long 타입 활용하기
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ_13241_최소공배수 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
long A = Long.parseLong(st.nextToken());
long B = Long.parseLong(st.nextToken());
// A*B / GCD(최소공배수) = LCM
long ans = 0;
if(A > B){
ans = A*B/(GCD(A,B));
}else if(A < B){
ans = A*B/(GCD(B,A));
}else{
ans = A;
}
System.out.println(ans);
}
// x가 y보다 큰 경우로 설정
static long GCD(long x, long y){
while(y != 0){
long r = x%y;
x = y;
y = r;
}
return x;
}
}
소감
쉬운 문제라 생각하여 접근하였으나 순간 최소공배수 공식이 생각나지 않아 잠깐 뻘쭘할뻔...