[백준] 1037: 약수

SuKong·2020년 8월 9일
0
post-thumbnail

'1037- 약수' 문제로 이동!

👉문제

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

👉입력

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

예시 -
2
4 2

👉출력

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

예시 - 8


✍내 풀이

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int[] arr = new int[num];
		for( int i = 0 ; i < num ; i++) {
			arr[i] = sc.nextInt();
		}
		
		System.out.println(divisorNum(arr, num));
	}
	
	static int divisorNum(int[] arr, int num) {
		int Max = 0, Min = arr[0] ;
		for( int i = 0 ; i < num ; i++ ) {
			if( arr[i] > Max) Max = arr[i];
			if( arr[i] < Min) Min = arr[i];
		}
		return Max*Min;
	}
	
}


✍Note

숫자 12를 예로 들어보면, 12의 약수는 1, 2, 3, 4, 6, 12이고,
문제에서 말하는 '진짜 약수'는 2, 3, 4, 6이고 진짜 약수의 갯수는 4이다.
즉 입력이
4
2 3 4 6 일 것이다.
이때 진쨔 약수로 숫자를 구하는 방법은 가장 작은 진짜 약수와 가장 큰 진짜 약수를 곱하면 된다.
따라서 입력으로 받는 모든 진짜 약수들 중 Min값과 Max값을 찾아 곱하여 리턴한다.

profile
안녕하세요 🤗

0개의 댓글