프로그래머스_예산

임정민·2023년 9월 22일
1

알고리즘 문제풀이

목록 보기
107/173
post-thumbnail

프로그래머스 Lv1 문제입니다. 실전에 대비하기 위해 30분 시간제한을 두고 풀었습니다.

문제

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

[나의 풀이]

⌛ 2분 소요


def solution(d, budget):
    answer = 0
    
    d.sort()

    for el in d:
        budget-=el
        if budget<0:
            break
        answer += 1

    return answer

부서별 필요 금액(d)을 입력받고 예산(budget)내에 지원해줄 수 있는 최대 부서 수를 구하는 문제입니다. 간단히 d를 오름차순으로 정렬하고 for문을 돌며 예산에서 차감하면 되는 문제였습니다.🐼🐼🐼

[다른 사람의 풀이1]


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

입력된 부서별 필요 금액을 정렬한 뒤 필요금액이 예산을 초과한다면 가장 비싼 금액이 필요한 부서를 빼는 방식입니다. 좋은 접근이지만 이 코드의 경우 sum()함수를 계속 실행시키기 때문에 저의 풀이보다 시간은 더 걸리는 방식이였습니다.🐰🐰🐰

'나의 풀이' vs '다른 사람의 풀이1' 시간 비교

[다른 사람의 풀이2]


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

'나의 풀이'와 같은 원리의 풀이입니다.

감사합니다.

profile
https://github.com/min731

0개의 댓글