[프로그래머스 / lv.1] 예산


날짜: 2021년 6월 7일
소요 시간: 6분 11초
카테고리: 수학문제
태그: 레벨1, 파이썬

코딩테스트 연습 - 예산

입출력 예시

dbudgetresult
[1,3,2,5,4]93
[2,2,3,3]104

내가 적은 코드

def solution(d, budget):
    d.sort()
    count = 0
    bud = 0
    for i in d:
        bud += i
        if bud > budget:
            break
        count += 1
    return count

풀이 과정

신청한 부서 d를 내림차순으로 정렬하여 하나하나씩 더해 주어 bud에 저장 한 후
저장 한 부서만큼 count에 +1씩 해준다.
bud가 예산을 나타내는 파라미터인 budget보다 커지게 될 경우 반복을 멈추고 count를 리턴한다.

베스트 코드

def solution(d, budget):
    d.sort()
    while budget < sum(d):
        d.pop()
    return len(d)

신청한 부서 d가 많고 예산 budget이 적으면 리스트 뒤에서 부터 pop하며 읽어내려가기 때문에 비효율적인 코드가 될 수도 있다.

반성

  • 어렵게 생각할 필요가 없던 문제인데 6분이나 소비하였다.




© 2021. by hminkim