최대 1 분 소요

문제 링크

내 풀이

def solution(d, budget):
    sum = 0
    result = 0
    d.sort()
    for _ in range(len(d)):
        if d:
            sum += d.pop(0)
            result += 1
        if sum == budget:
            break
        if sum > budget:
            result -= 1
            break  
    return result

다른 풀이

def solution(d, budget):
    
    d.sort()  # 부서별 신청 금액을 오름차순으로 정렬
    
    # 부서별 신청 금액과 인덱스를 순회
    for idx, cost in enumerate(d):
        
        # 예산에서 현재 부서의 신청 금액을 차감
        budget -= cost
        
        if budget < 0:  # 예산이 부족하면
            return idx  # 이 때까지 지원한 부서의 개수(인덱스) 반환
        
    # 모든 부서를 지원할 수 있는 경우 현재까지 지원한 부서의 개수가 전체 부서 개수와 동일
    return len(d)

풀이 해석

d를 sort() 한 이후에 처음부터 빼나가면서 예산이 0 미만이 되면 idx를 도출한다. 싹다 지원이 가능하면 len(d) 도출

댓글남기기