Swift | programmers/Lv1.

[Swift] Lv1. 예산

iOSDEv 2024. 3. 19. 08:54

 

예산
문제

 

나의 풀이

 

import Foundation

func solution(_ d:[Int], _ budget:Int) -> Int {
    var remains = budget
    var count = 0
    
    for x in d.sorted() {    
        remains -= x
        
        if remains < 0
        {
            return count
        }
                 
        count += 1
       
    }
    
    return count
}

 

sorted를 사용하여 정렬하고

가지고 있는 금액에서 물품의 금액을 빼준다

만약 0이하이면 count반환

아니라면 count += 1

다른 사람 풀이
import Foundation

func solution(_ d:[Int], _ budget:Int) -> Int {
    var budget = budget

    return d.sorted().filter{
        budget = budget - $0
        return budget >= 0
    }.count
}

 

고차함수를 이용하여 깔끔한 코드를 볼 수 있었다

 

import Foundation

func solution(_ d:[Int], _ budget:Int) -> Int {
    var sum = 0
    for i in d.sorted().enumerated() {
        sum = sum + i.element
        if sum > budget {
            return i.offset
        }
    }
    return d.count
}

offset과 count를 사용한다 정말 신박했던 답변