예산

문제 설명

d는 부서별로 신청한 예산 금액이 들어있는 배열이며, 정해진 budget(예산) 안에서 부서에 원하는 금액을 모두 지원해줘야 한다. 최대 몇 개의 부서에 예산을 지원할 수 있는지 구하여라.

첫 코드

def solution(d, budget):
    d.sort() 
    for i in enumerate(d):
        budget -= i[1]
        if budget < 0:
            break
    if budget == 0:
        answer = (i[0]+1)
    else:
        answer = (i[0])
    return answer

 

개선된 코드

def solution(d, budget):
    d.sort()
    temp=0
    
    if sum(d) <= budget:
        return len(d)
    else:
        for i in range(0, len(d)):
            temp += d[i]
            if temp > budget:
                return i

핵심 아이디어

제일 처음으로 배열 d를 오름차순으로 정렬해준다. 그리고, 만약 배열 d의 다 더한 값이 budget보다 작거나 같을 때, 배열의 길이를 반환하게 한다. 반대로, d의 총합이 budget보다 큰 경우, 반복문을 사용하여 몇 번 더하였는지 인덱스의 값을 반환해준다.

'알고리즘 > 프래그래머스 lv.1' 카테고리의 다른 글

[1차] 비밀지도  (0) 2022.10.24
시저 암호  (0) 2022.10.24
[프래그래머스] 소수 찾기(Python)  (0) 2022.10.21
2016년  (0) 2022.10.19
완주하지 못한 선수  (0) 2022.10.19