예산
문제

나의 풀이
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를 사용한다 정말 신박했던 답변
'Swift | programmers > Lv1.' 카테고리의 다른 글
| [Swift] Lv.1 3진법 뒤집기 (0) | 2024.03.18 |
|---|---|
| [Swift] Lv.1 없는 숫자 더하기 (0) | 2024.03.13 |
| [Swift] Lv.1 최대공약수와 최소공배수 - 유클리드 호제법 (0) | 2024.03.12 |
| [Swift] Lv.1 직사각형 별찍기 (0) | 2024.03.11 |
| [Swift] Lv.1 행렬의 덧셈 (0) | 2024.03.10 |