프로그래머스 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
'나의 풀이'와 같은 원리의 풀이입니다.
감사합니다.