https://www.acmicpc.net/problem/1037
import java.util.*;
import java.io.*;
public class Main {
static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
static StringBuilder sb=new StringBuilder();
static int[] number;
public static void main(String args[]) throws Exception {
int num=Integer.parseInt(br.readLine());
String s[]=br.readLine().split(" ");
number=new int[num];
for(int i=0;i<num;i++) {
number[i]=Integer.parseInt(s[i]);
}
Arrays.sort(number);
long result=number[0]*number[num-1];
System.out.println(result);
}
}
어떤 수의 약수 중 대응하는 약수끼리 곱하면 그 수가 나옵니다.
예를 들어 18의 약수를 살펴봅시다.
18의 약수는 1, 2, 3, 6, 9, 18입니다.
대응하는 약수끼리 곱하면 1*18, 2*9, 3*6이 되는데요, 이렇게 되면 18이 됩니다.
이 성질을 이용해서 문제를 풀었는데요, 두 번째 줄에서 약수를 입력받으면, 이 약수들을 number라는 정수 배열에 저장했습니다.
이후 이 배열을 오름차순으로 정렬해서 가장 작은 진짜 약수와 가장 큰 진짜 약수를 곱해줘서 원래 수가 어떤 수인지를 구했습니다.
'프로그래밍 문제 > BOJ(백준 온라인 저지)' 카테고리의 다른 글
[BOJ 1676번] 팩토리얼 0의 개수(JAVA) (0) | 2020.08.14 |
---|---|
[BOJ 2609번] 최대공약수와 최소공배수(JAVA) (feat. 유클리드 호제법) (0) | 2020.08.14 |
[BOJ 11051번] 이항 계수 2(JAVA) (0) | 2020.08.10 |
[BOJ 11050번] 이항 계수 1(JAVA) (0) | 2020.08.10 |
[BOJ 1931번] 회의실 배정(JAVA) (0) | 2020.08.08 |