본문 바로가기

백준 문제풀기/JAVA

[백준 1037 JAVA 자바] 약수

 

진짜 약수 = 1과 자기 자신을 제외한 약수

인것같죠?

 

진짜 약수들이 주어진다

라는 뜻은

약수중 1과 어떤 수 N이 빠졌다는 소리이고

 

출력에서는 어떤 수 N을 구하길 원합니다

 

약수는 보통 짝꿍이 있습니다

예를들어 12인 경우

2에겐 6이 있고

3에겐 4가 있어서

서로 곱하면 12가 되는 짝꿍이 있습니다

제곱수인 경우는 솔로인 약수가 있겠죠

 

이걸 코딩해보면

1. 진짜 약수의 수를 구한다 (짝수일시 제곱수가 아님, 홀수일시 제곱수임)

2. 짝수개인 경우 =  진짜 약수중 가장 작은 수와 가장 큰 수를 곱하면 됩니다 (짝꿍이기 때문에)

3. 홀수개인 경우 =  가운데 있는수를 제곱해줍니다 (제곱수이기 때문에)

 

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

public class Main {

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

		int n = scan.nextInt();
		
		int[] arr = new int[n];
		
		for (int i=0;i<n;i++) {
			arr[i]=scan.nextInt();
		}
		
		Arrays.sort(arr);
		int ans;
		
		if(arr.length%2==1) {
			ans = arr[(arr.length-1)/2]*arr[(arr.length-1)/2];
		}
		else {	
			ans = arr[0]*arr[arr.length-1];
		}
		System.out.println(ans);
	}	
}

 

일단 Scanner를 통해

int[] arr 에 진짜 약수들을 입력받고

 

Arrays.sort(arr)를 통해

오름차순으로 정렬합니다