누적 합의 성질을 생각해보는 문제. 분류는 그리디/정렬이었는데, 그리디 알고리즘을 푸는 방향보다는 수의 성질을 예시를 통해 접근하면서 귀납적으로 풀었던 문제였다. 이전에 파이썬으로 풀었던 경험이 있었기도 하고.
import Foundation
let N = Int(String(readLine()!))!
var numbers = Array(readLine()!.split(separator: " ").map{Int(String($0))!})
numbers.sort(by: <)
var sum = 0
for number in numbers {
if sum + 1 >= number {
sum += number
// 누적값 sum에 1을 추가한 값보다 주어진 저울 무게가 작다면 측정 가능
// number는 로컬 최솟값. 누적값으로 잴 수 있다면 계속해서 카운트한다.
} else {
break
}
}
print(sum + 1)