https://www.acmicpc.net/problem/13241
- 예제 입력1
1 1
- 예제 출력1
1
- 예제 입력2
3 5
- 예제 출력2
15
- 예제 입력3
1 123
- 예제 출력3
123
- 예제 입력4
121 199
- 예제 출력4
24079
- 문제 접근
- 입력
- 한 줄에 두 정수 A와 B가 공백으로 주어짐
- 50%의 입력 중 A와 B는 1,000(10^3)보다 작음
- 다른 50%의 입력의 A와 B는 1,000보다 크고 100,000,000(10^8)보다 작음
- Java는 long을 사용
- 출력
- A와 B의 최소 공배수를 한 줄에 출력
- 입력
- 문제 해결
- 앞의 문제와 달라진 점은 A와 B가 매우 큰 값이 나올 수 있기 때문에 long을 사용해야 한다는 점
- 결국 똑같은 최소공배수 문제이므로 이번에는 유클리드 호제법을 재귀함수로 구현해볼 것
- 기존 풀이 [메모리 : 14,336 KB / 시간 : 108 ms]
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
long a = Integer.parseInt(input[0]);
long b = Integer.parseInt(input[1]);
System.out.println(lcm(a, b));
}
private static long gcd(long a, long b){
return b == 0 ? a : gcd(b, a % b);
}
private static long lcm(long a, long b){
return a * b / gcd(a, b);
}
'Coding Test > Step15. 약수, 배수와 소수 2' 카테고리의 다른 글
[Java] 6단계. 소수 구하기 [1929번] (2) | 2024.11.05 |
---|---|
[Java] 5단계. 다음 소수 [4134번] (0) | 2024.11.04 |
[Java] 4단계. 가로수 [2485번] (0) | 2024.11.04 |
[Java] 3단계. 분수 합 [1735번] (0) | 2024.11.04 |
[Java] 1단계. 최소공배수 [1934번] (0) | 2024.11.04 |