뒤에 있는 by를 사용안하면 기본 정렬인 오름차순으로 정렬이 되며 by : > 면 큰 숫자부터 내림차순으로 by : < 면 오름차순으로 정렬이 된다.
해당 문제는 정렬을 이용한 그리디 문제이다.
사과가 4,4,4,3,3,3,2,2,2 가 있고 m이 4라면 (4,4,4,3), (3,3,2,2) 로 나눈 값과 (4,3,3,3), (4,4,2,2) 로 나눈 값이 모두 20으로 동일하다.
즉 정렬을 처음 한 뒤에 m번째 위치에 있는 숫자 * m 을 통해서 박스의 값을 알 수 있고 그걸 score 배열을 벗어나기 전까지 반복한 값을 더하면 정답이 된다.
[회고]
.
[코드]
import Foundation
func solution(_ k:Int, _ m:Int, _ score:[Int]) -> Int {
var answer = 0
var scores = score
scores.sort(by: >)
var start = m - 1
while start < scores.count {
answer += scores[start] * m
start += m
}
return answer
}