본문 바로가기

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

[lv1] 명예의 전당 (1)

문제

 

 

내 정답 코드

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만큼의 개수만큼만 배열로 반환한다.


배운 기술

'프로그래머스 (Swift) > lv 1' 카테고리의 다른 글

[lv1] 나머지가 1이 되는 수 찾기  (0) 2024.07.14
[lv1] 옹알이 (2)  (0) 2024.07.07
[lv1] 둘만의 암호  (0) 2024.06.25
[lv1] 없는 숫자 더하기  (0) 2024.06.25
[lv1] 덧칠하기  (0) 2024.06.16