Sol1)
- d를 오름차순으로 정렬합니다.
- 예산이 적은 부서일수록 index가 낮기 때문에 index가 0인 부서부터 예산을 할당합니다.
- 예산을 할당하면, 그 부서는 pop으로 빼고, answer(예산 할당 부서의 수)을 1 추가합니다.
def solution(d, budget):
answer = 0
d.sort()
while budget > 0:
if budget - d[0] >=0 :
budget -= d.pop(0)
answer += 1
else:
return answer
return answer
print(solution([1,3,2,5,4],9))
[out]
3
하지만 저는 런타임 에러를 마주했습니다..!
Sol2)
def solution(d, budget):
answer = 0
while budget > 0:
if budget - min(d) >=0 :
budget -= min(d)
d.remove(min(d))
answer += 1
else:
return answer
return answer
print(solution([1,3,2,5,4],9))
[out]
3
sort가 시간이 좀 걸린다는 글을 보았던게 기억이 났습니다.
sort를 빼고 min()을 사용해보았습니다.
하지만 이도 런타임 에러..!
Sol3)
def solution(d, budget):
answer = 0
d.sort()
for i in d:
if budget - i >=0 :
budget -= i
answer += 1
else:
return answer
return answer
print(solution([1,3,2,5,4],9))
[out]
3
- 부서를 오름차순으로 정렬한다
- 예산이 적은 부서부터 예산을 할당하고, answer(예산 할당 성공 부서의 수) 1을 추가한다.
- 예산이 0보다 작아질 경우, answer return한다.
*기존 리스트 d에서 예산 할당한 부서 빼주지 않게 다시 구성했습니다. -> 성공!
'2021 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] Lv.2 - 위장 (Python) (0) | 2020.12.29 |
---|---|
[프로그래머스] Lv.1 - 실패율 (Python) (0) | 2020.12.29 |
[백준] 10867 - 중복 빼고 정렬하기_python (0) | 2020.12.10 |
[프로그래머스] Lv.1 - 직사각형 별찍기 _파이썬 (0) | 2020.12.05 |
[프로그래머스]Lv.1 - 제일 작은 수 제거하기_파이썬 (0) | 2020.12.04 |
댓글