국문과 유목민

36. 예산 본문

알고리즘_코딩테스트/프로그래머스_Level1

36. 예산

논곰 2020. 9. 12. 23:13

0. 문제

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

 

코딩테스트 연습 - 예산

S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 ��

programmers.co.kr


1. 알고리즘 계획

  1. 개수를 저장할 변수(count)를 하나 생성한다.
  2. for문을 돌면서, 예산에서 해당되는 부서를 찾으면 예산에서 값을 빼고, count를 증가시킨다.

- '부서의 필요한 금액 리스트'를 돌 때 값을 정렬시켜주면 코드를 효율적으로 돌 수 있다.


2. 나의 코드

def solution(d, budget):
    count = 0
    for i in sorted(d):
        if budget - i >= 0:
            budget -= i
            count += 1
    return count

- 처음에 '정렬'을 하지 않고 코드를 작성해 잠깐의 오류가 있었다.


3. 다른 사람의 코드

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

- 재밌게 풀었다고 생각한다. 

-  while문을 돌며 d의 값을 하나씩 빼면서, d의 합을 budget과 비교 한다.

- 이 경우에서 sum(d)의 값이 budget값보다 낮아진다는 뜻 == 예산으로 d의 모든 값들을 해결할 수 있다가 된다.    


4. 정리 및 리뷰

- 뭔가 내 코드가 교과서적으로 풀었다는 느낌이었다면, 다른 사람의 코드는 자료형의 특성과 함수에 대해서 잘 이해하고, 사용해본 것 같다는 느낌을 받았다.

코드 만족도: ★★☆ 


'알고리즘_코딩테스트 > 프로그래머스_Level1' 카테고리의 다른 글

38. 실패율  (0) 2020.09.12
37. 비밀지도 찾기  (0) 2020.09.12
35. 별 찍기  (0) 2020.09.12
34. X만큼 간격이 있는 n개의 숫자  (0) 2020.09.12
33. 행렬의 덧셈  (0) 2020.09.12
Comments