유형 : 그리디....
나는 그리디가 싫다.,........
1. recursion
def solution(d, budget):
answer = buy(d, budget, 0)
return answer
def buy(d, n, finish):
if n == 0 or not d:
return finish
res = []
for i in range(len(d)):
if d[i] > n:
return finish
new = d.copy()
curr = new.pop(i)
res.append(buy(new, n-curr, finish + 1))
return max(res)
결과 : 시간 초과
recursion으로 푸는 게 아니었다.
뭔가 이게 아니다 싶으면 빨리 다른 알고리즘을 생각해보자.
2. greedy
그냥 제일 작은 부서부터 빼면 그게 최대 부서의 숫자가 되는거였다. 당연함.
def solution(d, budget):
d.sort()
ans = 0
for money in d:
if money > budget:
return ans
budget -= money
ans += 1
return ans
ㅎㅎ^
그리디 싫어
'프로그래머스 > Lv. 1' 카테고리의 다른 글
26. 이상한 문자 만들기 (enumerate) (0) | 2024.07.12 |
---|---|
25. 3진법 뒤집기 ★ (10진법 -> 3진법, 3진법 -> 10진법) (0) | 2024.07.12 |
23. 행렬의 덧셈 ★ (numpy library의 사용) (0) | 2024.07.12 |
22. 문자열 다루기 기본 (0) | 2024.07.12 |
21. x만큼 간격이 있는 n개의 숫자 (리스트 컴프리헨션) (0) | 2024.07.12 |