코드치고 무게치고

[백준 python] 1037번 약수 본문

개발공부/코딩테스트 준비

[백준 python] 1037번 약수

코딩하자영아 2022. 3. 2. 23:01

[백준 python] 1037번 약수

레벨: 실버5

언어: python


문제풀러가기

 

1037번: 약수

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

www.acmicpc.net

📑풀이 과정

문제를 보면 N의 약수가 주어진다.
주어지는 약수(A)는 진짜약수라고 해서 A != 1, A !=N이다
이걸 보면 주어지는 N은 소수가 아니다.

 

그리고 N의 모든 약수가 주어진다고 했을때
약수의 개수가 1개이면 N은 주어진 약수의 제곱이다. A^2
약수가 1개 이상이면 들어온 약수를 정렬하여 가장 작은 수와 가장 큰수를 곱하면 N을 구할 수 있다.

 

3 4 2 12 6 8 가 주어질 때
[2, 3, 4, 6, 8, 12] 로 정렬된 배열을 만들고
배열의 처음과 끝 값을 곱하면 N을 구할 수 있다.

📋풀이 코드

import sys

input = sys.stdin.readline

T = int(input())
arr = list(map(int, input().split()))
arr.sort()
if T >1:
  print(arr[0]*arr[-1])
else:
  print(arr[0]**2)

Comments