프로그래밍/코딩테스트
그리디- 큰 수의 법칙 / Swift
turu
2021. 5. 13. 17:04
이것이 취업을 위한 코딩테스트다 p.92
방법1 : 반복문으로 구하기
import Foundation
let nmk = readLine()!.split(separator: " ").map { Int($0)! }
var list = readLine()!.split(separator: " ").map { Int($0)! }
let n = nmk[0], m = nmk[1], k = nmk[2]
var passed = 0
var sum = 0
list.sort(by: >)
while passed < m {
passed += 1
if passed % k == 0 {
sum += list[1]
} else {
sum += list[0]
}
}
print(sum)
방법2 : 수열의 규칙성을 이용하여 실제 갯수를 구해버리기
import Foundation
let nmk = readLine()!.split(separator: " ").map { Int($0)! }
var list = readLine()!.split(separator: " ").map { Int($0)! }
let n = nmk[0], m = nmk[1], k = nmk[2]
var passed = 0
var sum = 0
list.sort(by: >)
sum += (m / (k+1)) * (list[0] * k + list[1])
sum += (m % (k+1)) * list[0]
print(sum)
반응형