백준 - 1037 (Python) - 약수

박준영·2021년 7월 9일
0
post-thumbnail

달팽이는 올라가고 싶다


문제

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


입력

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


출력

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


코드

문제에서 말하는 "진짜 약수"는 자연수 N의 약수 중 1과 N자기 자신을 제외한 나머지 약수들을 의미한다.

약수는 오름차순으로 정렬했을 때 양쪽 끝에서 n번째 값과 짝을 이뤄 곱하면 항상 같은 수가 나오기 때문에 약수의 가장 작은 값과 가장 큰 값을 곱하면 어떤 수의 약수인지 알 수 있다.

ex) 	12의 약수 (1, 2, 3, 4, 6, 12) --> 1*12 = 2*6 = 3*4 = 12
	이 경우, 1과 자기 자신 12를 제외한 최솟값과 최댓값인 2, 6을 곱하면 원래 수를 알 수 있다.
  • 풀이


N = int(input())
A = list(map(int, input().split()))  # 진짜 약수들을 리스트에 담아준다.

max_num = max(A)  # 최댓값 구하는 max함수 사용
min_num = min(A)  # 최솟값 구하는 min함수 사용

print(max_num * min_num)  # 최댓값 * 최솟값 출력

0개의 댓글