-

[BOJ - JAVA] 1037 - 약수 본문

백준 문제 풀이

[BOJ - JAVA] 1037 - 약수

흣차 2021. 9. 30. 23:57
728x90
반응형

# 주소

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

 

1037번: 약수

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

www.acmicpc.net

 

# 문제

 

# 문제 해설 및 코드 리뷰

import java.util.*;
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 x = arr[n-1];
        
        System.out.print(arr[0] * x);

    }
}

정말 간단했습니다. 

n을 Scanner로 먼저 입력받아 저장합니다. 

그리고 n크기의 int타입의 arr을 생성합니다.

이후 arr[i]에 각각의 약수들을 저장합니다.

arr을 오름차순으로 정렬하고 arr[0]과 arr[n-1]을 잘 생각해봅시다.

N(행) 3 12 18 64 100 121
arr[0] 1 2 2 2 2 11
arr[n-1] 3 6 9 32 50 11
arr[0] * arr[n-1] 3 12 18 64 100 121

 

표에서 알 수 있듯이 arr[0] 과 arr[n-1]의 곱은 N이 됨을 확인할 수 있습니다.

따라서 N을 구하기 위해

System.out.print(arr[0] * arr[n-1]); 해주면 간단히 N을 출력할 수 있겠습니다.

감사합니다.

728x90
반응형
Comments