Where who wants to meet someone

백준 Swift [1037] 약수 본문

백준 알고리즘 문제 기록/심화 2

백준 Swift [1037] 약수

Lust3r 2023. 9. 11. 17:50
728x90

난이도

브론즈 I

 

문제

https://www.acmicpc.net/problem/1037

 

1037번: 약수

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

www.acmicpc.net

 

내 답안

let numberOfDivisor = Int(readLine()!)!

let divisors = readLine()!.split(separator: " ").map { Int($0)! }.sorted()

print(divisors[0] * divisors[numberOfDivisor - 1])
  • 처음에는 주어진 약수의 개수가 1개냐 아니냐, 최소공배수를 통한 값 구하기 등등을 해보았는데 실패.
  • 정렬한 값을 어떻게 쓸 수 없을까 하다가 약수의 최소 값과 최대 값을 곱하니 원하는 값이 나오는 것을 확인하여 문제를 해결할 수 있었음.
  • array.min(), max()를 써도 되지만 옵셔널 값이어서 0(첫 값), numberOfDivisor - 1(마지막 값)을 사용해서 가져왔다.