코딩테스트

[프로그래머스] 예산 - Lv.1

pyflu 2023. 8. 31. 01:52

[프로그래머스] 예산 Lv.1 - [파이썬/python]

 

https://school.programmers.co.kr/learn/courses/30/lessons/12982

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

 

문제 설명

 

 

예산(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