-
[BOJ - JAVA] 1037 - 약수 본문
728x90
반응형
# 주소
https://www.acmicpc.net/problem/1037
# 문제
# 문제 해설 및 코드 리뷰
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
반응형
'백준 문제 풀이' 카테고리의 다른 글
[BOJ - JAVA] 2609 - 최대공약수와 최소공배수 (0) | 2021.10.01 |
---|---|
[BOJ - JAVA] 17427 - 약수의 합2 (0) | 2021.10.01 |
[BOJ - JAVA] 11722 - 가장 긴 감소하는 부분 수열 (0) | 2021.09.30 |
[BOJ - JAVA] 11055 - 가장 큰 증가 부분 수열 (0) | 2021.09.30 |
[BOJ - JAVA] 1339 - 단어 수학(그리디, 브루트포스) (0) | 2021.09.30 |
Comments