카테고리 없음
[백준-1037] 약수 구하기
키보드발
2023. 11. 15. 01:09
문제
양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다.
# 예제 입력
2
4 2
# 예제 출력
8
이 문제를 풀기 위해서는 약수에 대해서 알 필요가 있다.
약수의 성질은 "N = N의 가장 작은 약수 x N의 가장 큰 약수" 와 같다.
따라서 입력받은 약수의 순서를 정리하고 배열의 첫번째와 마지막을 곱하면 정답이 나온다.
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = Integer.parseInt(sc.nextLine());
int[] nums = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
Arrays.sort(nums);
int answer = nums[0] * nums[count-1];
System.out.println(answer);
}
}
해당 문제를 풀기위해 먼저
sc.nextLine().split(" ")
해당 부분을 통해 Input을 " " 공백으로 잘라서 String 배열로 변환하였다.
Arrays.stream(sc.nextLine().split(" "))
이후 스트림으로 변환 후
int[] nums = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
해당 스트림을 int로 변환하였다.
Arrays.sort(nums);
int answer = nums[0] * nums[count-1];
System.out.println(answer);
이후 정렬 후에 배열의 처음과 배열의 끝을 곱하여 N을 구하였다.