본문 바로가기

카테고리 없음

[백준 1037] 약수 (Java)

 

https://www.acmicpc.net/problem/1037

 

1037번: 약수

첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다.

www.acmicpc.net

 

접근 방법

진짜 약수들을 순서대로 정렬해놓고 보면,

 

첫번째 약수 * 마지막 약수 = N

두번째 약수 * 뒤에서 두번째 약수 = N

세번째 약수 * 뒤에서 세번째 약수 = N

...

와 같은 패턴을 발견할 수 있다.

 

정렬 후, 첫번째 약수와 마지막 약수의 곱을 출력하면 되는 쉬운 문제였다.

 

 

 

최종 코드

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

public class Main {

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

        int number = scanner.nextInt();
        int[] factors = new int[number];

        for (int i = 0; i < number; i++) {
            factors[i] = scanner.nextInt();
        }

        Arrays.sort(factors);

        System.out.println(factors[0] * factors[number - 1]);
    }
}
반응형