반응형
어떤 수 N에 대해 1과 자기 자신(N)을 제외한 약수들이 주어졌을 때, 어떤 수 N을 찾는 문제.
N에대한 약수는 제곱수가 아니라면 짝수개의 순서쌍으로 주어질 것이다.
때문에 이 약수들 중에서 가장 작은 수와, 가장 큰 수를 곱하면 자연스럽게 N을 구할 수 있다.
(제곱수이며 약수가 1개인 경우는 가장 작은수, 가장 큰 수가 같아짐)
나는 2가지 방법으로 풀어보았다.
첫번째
약수를 배열로 받아 오름차순 정렬한 후, 첫번째 인덱스와 마지막 인덱스를 곱함.
// 해설참조 : sehyeok.tistory.com
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
for (int i = 0; i < a.length; i++) {
for (int j = i; j < a.length; j++) {
if (a[i] > a[j]) {
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
System.out.println(a[0] * a[a.length - 1]);
sc.close();
}
}
두번째
최솟값을 저장할 min 변수와 최댓값을 저장할 max 변수를 두어 최댓값과 최솟값만을 저장한 후 이를 곱함
// 해설참조 : sehyeok.tistory.com
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
int min = 1000000;
int max = 0;
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
if (a[i] < min) {
min = a[i];
}
if (a[i] > max) {
max = a[i];
}
}
System.out.println(max * min);
sc.close();
}
}
반응형
'Java > 백준알고리즘' 카테고리의 다른 글
[Java] 백준알고리즘 #26069 붙임성 좋은 총총이 (2) | 2023.10.17 |
---|---|
[Java] 백준알고리즘 #25192 인사성 밝은 곰곰이 (0) | 2023.10.17 |
[Java] 백준알고리즘 #11050 이항 계수 1 (0) | 2023.10.13 |
[Java] 백준알고리즘 #10872 팩토리얼 (0) | 2023.10.13 |
[Java] 백준알고리즘 #24723 녹색거탑 (0) | 2023.10.13 |