https://www.acmicpc.net/problem/1037
약수들 중 가장 큰 것과 가장 작은 것을 곱하면 되는 문제이다.
진짜 약수들이기 때문에 최소공배수로 구하면 안된다. 진짜 약수는 약수들 중 1과 N을 제외한 것이다.
예를 들면
6
3 4 2 12 6 8
에서 답은 24인데 24의 약수는 1 2 3 4 6 8 12 24이다.
좌 우 대칭으로 약수를 하나씩 곱하면 최소공배수를 구할 수 있다. 따라서 진짜 약수 중 가장 작은 수와 가장 큰 수를 곱하면 된다. 수들을 입력 받아 배열에 넣고 정렬한 다음 0번 인덱스와 가장 마지막 인덱스의 수를 곱하면 답을 구할 수 있다.
import java.util.*;
public class Main {
public static void main(String[] args){
int n;
long mul;
Scanner sc = new Scanner(System.in);
n=sc.nextInt();
int[] arr = new int[n];
for(int i=0; i<n; i++) {
arr[i] = sc.nextInt();
}
Arrays.sort(arr);
System.out.println(arr[0]*arr[n-1]);
}
}
'프로그래밍 > 백준 문제풀이' 카테고리의 다른 글
백준 17425: 약수의 합(JAVA) (0) | 2022.08.18 |
---|---|
백준 17427: 약수의 합 2 (0) | 2022.08.18 |
백준 4375: 1 (JAVA) / 모듈러 연산 분배 법칙 (0) | 2022.08.12 |
백준 1316: 그룹 단어(JAVA) / (0) | 2022.08.10 |
백준 1920: 수 찾기 / 이진 탐색(binary search) (0) | 2022.08.09 |