백준 문제풀이

1037. 약수 (자바, Java)

뮤츠 2022. 10. 24. 01:06

생각보다 쉬운 문제다.

간단히 생각하면 된다. 정수는 약수와 약수의 곱으로 되어있다.

약수를 오름차순으로 정렬한 경우를 생각해보자. 가령 12의 약수를 오름차순으로 정렬하면 1, 2, 3, 4, 6, 12이다.

눈치챘을지도 모르지만, 가장 작은 약수와, 가장 큰 약수를 순서대로 곱하면 자기자신이 나오게된다.

1 * 12 = 12, 2 * 6 = 12.

1과 자기자신이 빠졌으니, 앞뒤로 하나씩 빠진 셈이다. 받은 약수값을 정렬해서, 맨 앞 값과 맨 뒷 값을 곱해주면 된다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		int[] rf = new int[n]; // real factor
		
		for (int i=0; i<n; i++) {
			rf[i] = Integer.parseInt(st.nextToken());
		}
		
		Arrays.sort(rf);
		System.out.println(rf[0] * rf[n-1]);

	}

}