문제
예산
문제파악하기
- 작은 예산부터 담아가며 예산을 초과하지 않을 때 까지 숫자를 세면 된다.
풀이
func solution(_ d:[Int], _ budget:Int) -> Int {
var total = 0
var count = 0
let departments = d.sorted()
for i in departments {
total += i
guard total <= budget else { break }
count += 1
}
return count
}
🤔 FEEDBACK
- 너무 단순하게 푼 건 아닌가? 싶을정도로 코드는 단순한데 생각보다 오래걸렸다.
- 처음엔 array로 접근하고 popLast를 이용해서 풀고싶었다.
- 시간복잡도가 O(1)이라서 .. 그런데 로직을 시간내에 생각해내지 못했다.
- 그래서 또복문(또 반복문 이라는 뜻) ...
다른 풀이
import Foundation
func solution(_ d:[Int], _ budget:Int) -> Int {
var money = budget
let result = d.sorted().filter {
if (money - $0) >= 0 {
money = money - $0
return true
} else {
return false
}
}.count
return result
}
- 코드작성자
- 개인적으로 좋다고 생각하는 코드
- 얼른 filter같은 고차함수 사용에 익숙해지고싶다 ..