입력 수는 5개로 고정이다.
출력을 구하는 방법은 아래 이미지와 같이 총 10번의 연산을 통해 이루어진다.
1. 모든 경우의 수를 따져 5개의 수 중 3개를 골라 최소공배수를 구한다.
2. 최소공배수들 중 가장 작은 값을 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int arr[] = new int[5]; // 입력 받은 수
int common_multiple[] = new int[10]; // 공배수 10개
int cnt = 0;
for (int i = 0; i < 5; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 4; j++) {
for (int k = j + 1; k < 5; k++) {
// 공배수 구해주는 함수
common_multiple[cnt++] = multiple(arr[i], arr[j], arr[k]);
}
}
}
Arrays.sort(common_multiple);
System.out.println(common_multiple[0]);
}
public static int multiple(int a, int b, int c) {
int max=0, num1=0, num2=0, leastCommonMuliple=0, cnt=2;
if(a>b) {
if(a>c) {
max = a;
num1 = b; num2 = c;
}else {
max = c;
num1 = a; num2 = b;
}
}else {
if(b>c) {
max = b;
num1 = a; num2 = c;
}else {
max = c;
num1 = a; num2 = b;
}
}
for(int i=max; ; i=max*(cnt++)) {
if(i%num1==0 && i%num2==0) {
leastCommonMuliple = i;
break;
}
}
return leastCommonMuliple;
}
}
[출처]
https://www.acmicpc.net/problem/1145
'CODING > BAEKJOON' 카테고리의 다른 글
[BAEKJOON] 1065번 한수 (0) | 2022.01.26 |
---|---|
[BAEKJOON] 4673 셀프 넘버 (0) | 2022.01.26 |
[BAEKJOON] 2615번 오목 (0) | 2022.01.25 |
[BAEKJOON] 1110번 더하기 사이클 (0) | 2022.01.24 |
[BAEKJOON] 4344번 평균은 넘겠지 (0) | 2022.01.24 |
댓글