간단한 문제인데 숏코딩을 할 수 없을까 생각하다가 빠르게 생각이 안 나서 그냥 다음과 같이 풀었다:
def solution(d, budget):
if min(d) > budget:
return 0
answer = 0
count = 0
for i in sorted(d):
if answer == budget:
return count
break
if answer > budget:
return count-1
break
answer += i
count += 1
return len(d)
문제의 요구 조건들을 그대로 옮겨 놨다. 하지만 다른 사람의 풀이를 보고는 그래도 조금의 숏코딩은 가능했었구나 싶었다:
다른 사람의 풀이
다음은 프로그래머스에서 가장 많은 좋아요를 받은 풀이이다:
def solution(d, budget):
d.sort()
while budget < sum(d):
d.pop()
return len(d)
나의 풀이처럼 더하는 것이 아닌 빼주는 방식으로 체크하여 확인을 하는 것도 하나의 방법이다.
'알고리즘 테스트 > 프로그래머스 문제풀이 및 해설' 카테고리의 다른 글
<프로그래머스 문제풀이: 실패율> Level 1 - 파이썬 (0) | 2020.12.02 |
---|---|
<프로그래머스 문제풀이: [1차] 비밀지도> Level 1 - 파이썬 (0) | 2020.12.01 |
<프로그래머스 문제풀이: 직사각형 별찍기> Level 1 - 파이썬 (0) | 2020.11.29 |
<프로그래머스 문제풀이: x만큼 간격이 있는 n개의 숫자> Level 1 - 파이썬 (0) | 2020.11.28 |
<프로그래머스 문제풀이: 행렬의 덧셈> Level 1 - 파이썬 (0) | 2020.11.27 |