https://www.acmicpc.net/problem/1037
[문제]

[해설]
1. 문제 이해
어떤 자연수 N이 있을 때,
진짜 약수란 다음 조건을 만족하는 수를 의미한다.
- N을 나눌 수 있는 수
- 1과 N 자신은 제외
예를 들어
이라면 약수는
하지만 진짜 약수는 아래와 같다.
문제에서는 N의 진짜 약수들이 모두 주어졌을 때,
원래의 N을 구하는 것이 목표이다.
2. 핵심 아이디어
약수에는 중요한 특징이 있다.
어떤 수의 가장 작은 약수와 가장 큰 약수를 곱하면 원래 수가 된다.
예를 들어
약수
진짜 약수
이떄
따라서
즉 진짜 약수들 중에서 최소값과 최대값을 곱하면 원래의 N이 된다.
[코드]
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int [] arr = new int[N];
for (int i=0; i<N; i++) {
arr[i] = sc.nextInt();
}
int min = arr[0];
int max = arr[0];
for (int i=0; i<N; i++) {
if (min > arr[i]) {
min = arr[i];
}
if (max < arr[i]) {
max = arr[i];
}
}
System.out.println(min * max);
sc.close();
}
'알고리즘 > 문제' 카테고리의 다른 글
| [백준] 2566번 문제 - JAVA (0) | 2026.03.09 |
|---|---|
| [백준] 10810번 문제 - JAVA (0) | 2026.03.09 |
| [백준] 25494번 문제 - JAVA (0) | 2026.03.08 |
| [백준] 1032번 문제 - JAVA (0) | 2026.03.05 |
| [백준] 1009번 문제 - JAVA (0) | 2026.03.05 |