Study/알고리즘

백준 1037번 - 약수 JAVA

토기발 2022. 7. 25. 14:47

이 문제를 보니 예전에 자바로 약수구하기 문제를 풀었던게 생각난다.

https://dsdsds.tistory.com/10?category=1002335 

약수가 뭔지 잊었던..슬픈 추억^_^

 

아무튼 문제를 봤는데 이 문제는 예제를 보면 답을 알 수 있을 것 같았다. 

 

예제를 보면 약수 중 가장 작은 수와 가장 큰 수를 곱하면 N이 나온다는 것을 알 수 있다.

(예제 3에서 3x12 = 24)

그렇다면 가장 작은 수와 가장 큰 수를 어떻게 구하느냐가 문제인데...

Arrays.sort() 를 하면 배열을 오름차순 정렬할 수 있다.

그러면 배열[0] 과 배열[n-1](0번부터 시작하기 때문에 가장 마지막 숫자는 n-1번 방에 있다) 을 곱하면 N이 나올 것이다.

 


 

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

public class Main {
	public static void main(String[] args){
		Scanner in = new Scanner(System.in);
		int a = in.nextInt(); //약수의 개수
		int num[] = new int[a];//약수들 받을 배열
		
		for(int i=0; i<a; i++) {
			num[i] = in.nextInt(); //배열 안에 약수들 넣기
		}
		Arrays.sort(num);//오름차순 정렬
		System.out.println(num[0]*num[a-1]);//가장 작은 수*가장 큰 수=N
		
	}

}

 

설명은 주석에...