본문 바로가기

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

[lv1] 과일 장수

문제

 

내 정답 코드

import Foundation

func solution(_ k:Int, _ m:Int, _ score:[Int]) -> Int {
    var score = score
    var box: [[Int]] = []
    var result = 0
    
    score = score.sorted().reversed()

    for i in stride(from: 0, to: score.count, by: m) {
        var group: [Int] = []
        for j in i..<min(i + m, score.count) {
            group.append(score[j])
        }
        box.append(group)
    }

    box = box.filter { $0.count == m }
    
    for box in box {
        let sum = box.min()! * m
        result += sum
    }
    
    return result
}

 

#

1. 한 박스의 과일들 중 낮은 점수로 계산하기 때문에, 같은 점수의 과일들이 있으면 최대한 모아야 한다.

2. 과일을 내림 차순으로 정렬하고 m개 만큼 포장해간다. (stride를 사용하여 m의 주기로 반복문)

3. m개를 못 채운 상자들은 버려주고

4. 상자안의 가장 낮은 점수로 계산하여 result에 더해준다.


배운 기술

 

1. stride()

https://developer.apple.com/documentation/swift/stride(from:to:by:)

 

stride(from:to:by:) | Apple Developer Documentation

Returns a sequence from a starting value to, but not including, an end value, stepping by the specified amount.

developer.apple.com

https://developer.apple.com/documentation/swift/stride(from:through:by:)

 

stride(from:through:by:) | Apple Developer Documentation

Returns a sequence from a starting value toward, and possibly including, an end value, stepping by the specified amount.

developer.apple.com

 

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

[lv1] 없는 숫자 더하기  (0) 2024.06.25
[lv1] 덧칠하기  (0) 2024.06.16
[lv1] 콜라 문제  (0) 2024.06.12
[lv1] 삼총사  (0) 2024.06.12
[lv1] 추억 점수  (0) 2024.06.12