본문 바로가기
알고리즘연습/백준

[백준] 정수론 및 조합론 - 1037번 약수 java 자바

by 밈밈무 2021. 7. 11.

문제

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

 

1037번: 약수

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

www.acmicpc.net

양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오.

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

첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다.

 

풀이

처음에 예제 입력만 대충 보고 당연히 오름차순으로 입력이 들어올 거라고 생각해서 틀렸다. . . 틀릴리가 없는데 틀려서 좀 엥스러웠는데 생각해보니 약수가 오름차순대로 들어오지 않겠구나 싶어서 배열을 정렬한 후 제일 처음 값과 제일 마지막 값을 곱해주었다.

내가 이렇게 생각이 짧다 ^^

 

코드 

package 정수론및조합론;

import java.util.*;
public class No1037_약수 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		
		int N=sc.nextInt();
		int[] nums=new int[N];
		
		for(int i=0;i<N;i++)
			nums[i]=sc.nextInt();
		
		Arrays.sort(nums);
		
		int ans=nums[0]*nums[N-1];
		
		System.out.println(ans);
	}

}