프로그래머스 (Swift)/lv 1

[lv1] 명예의 전당 (1)

은더기 2024. 7. 7. 17:19

문제

 

 

내 정답 코드

import Foundation

func solution(_ k:Int, _ score:[Int]) -> [Int] {
    var kArr:[Int] = []
    var result:[Int] = []
    
    for value in score {
        kArr = calK(k: k, score: value, kArr: kArr)
        result.append(kArr.last!)
    }
    
    return result
}

func calK(k: Int, score: Int, kArr: [Int]) -> [Int] {
    var kArr = kArr
    kArr.append(score)
    kArr.sort(by: { $0 > $1 })
    
    if kArr.count > k {
        return Array(kArr[0..<k])
    } else {
        return kArr
    }
    return kArr
}

 

#

1. kArr에 점수를 계속 쌓으면서 마지막 값을 result에 담아준다.

2. 이 때, kArr을 쌓을 때마다 내림차순으로 정렬하고

3. kArr의 개수가 k보다 크면 k만큼의 개수만큼만 배열로 반환한다.


배운 기술