https://programmers.co.kr/learn/courses/30/lessons/12982
코딩테스트 연습 - 예산
S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는
programmers.co.kr
import Foundation
func solution(_ d:[Int], _ budget:Int) -> Int {
var result:[Int] = []
var array = d.sorted()
var a = 0
for i in 0 ..< d.count{
if budget >= (a + array[i]){
a += array[i]
result.append(array[i])
}
}
return result.count
}
1. 먼저 d를 .sorted 로 오름차순으로 정렬을 해야한다 생각했다.
왜냐하면 각 부서마다 원하는 금액을 줄때 작은곳부터 많은 부서 순으로 차례로 지원하게 되면 더 많은 부서들에게 지원을 해 줄 수 있기 때문인다.
2. 이후 .count로 각 부서의 수를 for 루프로 반복하였다.
정렬된 부서별 금액을 계속 a라는 함수에 더하고
만약 더한 부서의 다음 차례의 부서와 금액을 합쳤을 경우의 금액이 예산을 넘지 않으면 지원을 해줄 수 있다고 생각을 했다.
3.지원할수 있는 부서의 수를 파악하는 문제이기 떄문에 result 배열에 오름차순으로 정렬된 값들을 .append로 추가 하도록 한뒤
.count로 반환 하여 답을 도출했다.
'Swift랑 친해지기 > programmers 풀기' 카테고리의 다른 글
[프로그래머스] 내적 (Swift) (0) | 2022.07.18 |
---|---|
[프로그래머스] 없는 숫자 더하기 (Swift) (0) | 2022.07.18 |
[프로그래머스] K번째수 (Swift) (0) | 2022.06.21 |
[프로그래머스] 두개 뽑아서 더하기 (Swift) (0) | 2022.06.20 |
[프로그래머스] 제일 작은 수 제거하기 (Siwft) (0) | 2022.06.10 |