● 문제
● 풀이
이 문제를 풀이하기 전에 BigInteger 클래스에 대해 개념을 정리하였는데, BigInteger 자체 최대 공약수를 계산하는 유틸리티 메서드가 존재하였다. 최대 공약수만 있으면 이로 최대 공배수를 계산할 수 있기에 바로 적용해보았다.
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
BigInteger numA = BigInteger.valueOf(in.nextInt());
BigInteger numB = BigInteger.valueOf(in.nextInt());
BigInteger gcd = numA.gcd(numB);
BigInteger lcm = numA.multiply(numB).divide(gcd);
System.out.println(gcd);
System.out.println(lcm);
}
}
백준 풀이는 성공하였지만, 메모리와 시간이 흔히 쓰는 코드와 확연히 차이가 났다...
그냥 있는 정도만 알면 될듯
그래도 넘 쉬워지는데....
흔히 쓰는 최대공약수, 최소공배수 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
int d = gcd(a, b); // 최대공약수
System.out.println(d);
System.out.println(a * b / d);
}
// 최대공약수 재귀 방식
public static int gcd(int a, int b) {
if (b == 0)
return a;
// GCD(a, b) = GCD(b, r)이므로 (r = a % b)
return gcd(b, a % b);
}
}
출처 : https://st-lab.tistory.com/154
[백준] 2609번 : 최대공약수와 최소공배수 - JAVA [자바]
www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 문제 알
st-lab.tistory.com
'백준' 카테고리의 다른 글
[백준] 10814 나이순 정렬_ JAVA (0) | 2023.06.20 |
---|---|
[백준] 7568 덩치_ JAVA (1) | 2023.06.11 |
[백준] 1676 팩토리얼 0의 개수_ JAVA (0) | 2023.06.09 |
[백준] 1436 영화감독 숌_ JAVA (2) | 2023.06.09 |
[백준] 1181 단어 정렬_ JAVA (0) | 2023.06.09 |