문제 설명
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 |