🔗 문제 링크

https://programmers.co.kr/learn/courses/30/lessons/12982


👨🏻‍💻 내가 작성한 코드

def solution(d, budget):
    answer = 0
    for i in range(len(d)):
        if (budget - min(d)) >= 0:
            budget -= min(d)
            answer += 1
            d[d.index(min(d))] = 100001
        else:
            break
    return answer

👨🏻‍💻 다른 사람의 풀이

def solution(d, budget):
    d.sort()
    while budget < sum(d):
        d.pop()
    return len(d)

📝 결론

이번 문제의 경우 나는 budget의 크기가 마이너스가 될 때까지 매번 최솟값을 찾아서 budget에서 값을 빼고, 해당 최솟값을 범위 이상의 최댓값으로 변경하는 식으로 코드 작성을 하여서 매번 많은 연산을 하는 코드가 되었다.
다른 사람의 풀이를 보니 미리 list를 sort 하고 하나씩 pop 하는 방법으로 내가 작성한 코드보다 훨씬 연산이 적은 것을 확인할 수 있었다.
앞으로도 많은 문제를 풀며 보다 효율적으로 코드 작성하는 법을 익혀야겠다 👊🏻

profile
블로그 이전했습니다. -> https://seongwon.dev/

0개의 댓글