[백준/파이썬] 1037. 약수

jwKim·2023년 1월 8일
0

💻코테코테

목록 보기
23/42

< 과제 >

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

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

[ 출력 ]
첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다.
[ 예제 입력 1 ]
2
4 2

[ 예제 출력 1 ]
8

[ 예제 입력 2 ]
1
2

[ 예제 출력 2 ]
4

[ 예제 입력 3 ]
6
3 4 2 12 6 8

[ 예제 출력 3 ]
24

< 내 코드 >

import sys

N = int(sys.stdin.readline())
nums = list(map(int, sys.stdin.readline().split()))

print(max(nums) * min(nums))

< 피드백 >

  • 사실 내가 작성한 코드에서 N은 굳이 필요 없는 변수이다.
  • 약수의 특징을 생각해보면, 가장 작은 값과 가장 큰 값을 곱했을 때 원래 수가 나온다. (문제 조건에서 1과 자기 자신은 약수에 포함시키지 않는다고 함 )
    • 예를 들어, 6의 약수는 [1, 2, 3, 6] 이다. 최소 값인 2와 최대 값인 3을 곱하면 원래 수인 6이다.
    • 또 다른 예로, 36의 약수는 [1, 2, 3, 4, 9, 12, 18, 36]이다. 최소 값인 2와 최대 값인 18을 곱하면 원래 수인 36이 나온다.

< 출처 >

0개의 댓글