(프로그래머스 with python) 예산
LEVEL1 예산
https://programmers.co.kr/learn/courses/30/lessons/12982
이 문제도 쉽게 풀렸다. ! 지금 내 실력이 딱 프로그래머스 level1수준인듯 하다. 5문제중 3문제정도는 쉽게 푸는 실력이랄까… 백준과 병행해서 풀고 있는데 silver 2~4부터는 어렵다.. ㅠ 아이디어를 떠올리는게 너무 어렵다… level2 푸는 날이 조금 두렵다.. 방법은 하나인듯 하다.. ^^ 많이 풀어보자…
나는 정렬을 한 뒤 budget값이 d리스트에 있는 특정 원소보다 작을 경우 for문에서 벗어나게 작성하였다
def solution(d, budget):
answer = 0
d.sort()
for i in range(len(d)):
if budget < d[i]:
break
budget -= d[i]
answer += 1
return answer
solution([2,2,3,3], 10)
다른 코드를 봤을때 비슷하다. 단지 조건을 0보다 작으면으로 설정했는데 이게 속도면에서 좀 더 빨랐다. 미리 budget에서 값을 빼고 뺀값이 0보다 작은지를 확인했다. 순서가 살짝 다르다
def solution(d, budget):
d.sort()
answer = 0
for i in d:
budget -= i
if budget < 0:
break
answer += 1
return answer
sum을 사용해서 더 간단하게 처리가 가능하다. 하지만 아래의 코드는 시간 복잡도가 o(n^2)이기 때문에 효율성 면에서는 그렇게 좋지 못한듯 싶다..
def solution(d, budget):
d.sort()
while budget < sum(d):
d.pop()
return len(d)