[프로그래머스] 예산 Lv.1 - [파이썬/python]
https://school.programmers.co.kr/learn/courses/30/lessons/12982
문제 설명
예산(budget)으로부터 부서별 신청한 금액(d)을 최대 몇 개까지 감당 가능한지 최대 개수를 반환(return)하는 문제입니다.
※ 제한사항
- d는 부서별로 신청한 금액이 들어있는 배열이며, 길이(전체 부서의 개수)는 1 이상 100 이하입니다.
- d의 각 원소는 부서별로 신청한 금액을 나타내며, 부서별 신청 금액은 1 이상 100,000 이하의 자연수입니다.
- budget은 예산을 나타내며, 1 이상 10,000,000 이하의 자연수입니다.
더보기
- 부서별 신청한 금액(d)을 sort()함수를 사용하여 오름차순 정렬하여 작은 신청금액부터 예산(budget)을 빼보는게 어떨까요? 그러다 예산(budget)이 마이너스가 되면 d의 인덱스(index)를 반환(return)하면 됩니다.
- 만약 (예산(budget) - 전체 부서별 신청한 금액(d)) 했는데도 예산(budget)이 마이너스가 되지 않는다면 모든 부서별 신청한 금액(d)을 감당할 수 있으니 d의 길이를 반환(return)하면 됩니다.
정답 주의!!!
def solution(d, budget):
d.sort() # 부서별 신청 금액을 오름차순으로 정렬
# 부서별 신청 금액과 인덱스를 순회
for idx, cost in enumerate(d):
# 예산에서 현재 부서의 신청 금액을 차감
budget -= cost
if budget < 0: # 예산이 부족하면
return idx # 이 때까지 지원한 부서의 개수(인덱스) 반환
# 모든 부서를 지원할 수 있는 경우 현재까지 지원한 부서의 개수가 전체 부서 개수와 동일
return len(d)
728x90
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 문자열 내림차순으로 배치하기 - Lv.1 (23) | 2023.09.01 |
---|---|
[프로그래머스] 3진법 뒤집기 - Lv.1 (23) | 2023.09.01 |
[프로그래머스] 명예의 전당 (1) - Lv.1 (35) | 2023.08.30 |
[프로그래머스] 비밀지도 - Lv.1 (37) | 2023.08.30 |
[프로그래머스] 약수의 개수와 덧셈 - Lv.1 (20) | 2023.08.24 |