# BOJ01037 약수

https://www.acmicpc.net/problem/1037 (opens new window)

양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. N의 진짜 약수가 모두 주어질 때 N을 구해야 한다.

20의 약수를 나열해보면, [1, 2, 4, 5, 10, 20]이다. 이중에 진짜 약수는 [2, 4, 5, 10]이다. 이때 2 x 10, 4 x 5n인 20이 되는 것을 알 수 있다.

입력으로 주어지는 약수는 정렬되지 않은 상태이다. 그렇기 때문에 Arrays.sort()를 활용하여 오름차순 정렬한다. n의 값은 divisors[0] * divisors[divisors.length - 1]로 처리하면 n의 값을 구할 수 있다.

약수의 개수가 홀수인 25도 마찬가지이다. [1, 5, 25]인 경우 진짜 약수는 [5]이다. divisors[0]가리키는 값도 5이고 divisors[divisors.length - 1]5이기 때문에 n25이다.

import java.util.Arrays;
import java.util.Scanner;

public class BOJ1037 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();
        int[] divisors = new int[n];
        for (int i = 0; i < n; i++) {
            divisors[i] = scanner.nextInt();
        }

        Arrays.sort(divisors); // 오름차순 정렬

        System.out.println(divisors[0] * divisors[divisors.length - 1]);
    }
}
#algorithm #BOJ #수학 #정렬 #정수론
last updated: 10/10/2021, 6:09:25 PM