[프로그래머스] Summer/Winter Coding(~2018) - 예산 / python

2020. 11. 9. 00:50· 알고리즘/문제풀이
목차
  1. 문제 설명
  2.  
  3. 입출력 예
  4.  
  5. 나의 풀이
  6. 다른 사람의 풀이
728x90

문제 설명

 

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

물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다.

부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요.

제한사항

  • d는 부서별로 신청한 금액이 들어있는 배열이며, 길이(전체 부서의 개수)는 1 이상 100 이하입니다.
  • d의 각 원소는 부서별로 신청한 금액을 나타내며, 부서별 신청 금액은 1 이상 100,000 이하의 자연수입니다.
  • budget은 예산을 나타내며, 1 이상 10,000,000 이하의 자연수입니다.

 

입출력 예

d budget result
[1,3,2,5,4] 9 3
[2,2,3,3] 10 4

 

나의 풀이

def solution(d, budget):
    answer = 0
    d = sorted(d)
    accumulated = 0 
    for num in d:
        if accumulated + num > budget:
            break
        else:
            accumulated += num
            answer += 1
    return answer

 

다행히 직관적으로 답이 잘 떠올랐던 문제.

d 리스트를 낮은 값부터 정렬해주어 낮은 예산부터 지원해주면 budget으로 지원해줄 수 있는 최대 부서 수를 구할 수 있다. 사실 코드 제출 전까지는 뭔가 예외가 있을수도 있다는 생각이 들어 계속 긴가민가했다. 직관을 조금 더 믿어도 되겠다 싶었다. 

 

 

다른 사람의 풀이

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

 

작은 값부터 하나 씩 추가해줬던 나에 비해서, 이 사람은 pop을 통해서 큰 값부터 하나씩 빼주었다. 부서의 갯수 또한 len을 통해서 깔끔하게 return해주었다.

'알고리즘 > 문제풀이' 카테고리의 다른 글

[프로그래머스] 최솟값 만들기 - Python  (0) 2020.12.06
[프로그래머스] Summer/Winter Coding(~2018) - 점프와 순간 이동 / python  (0) 2020.11.09
[프로그래머스] Summer/Winter Coding(~2018) - 영어 끝말잇기 / python  (0) 2020.11.09
[프로그래머스] 2019 KAKAO BLIND RECRUITMENT - 실패율 / python  (0) 2020.11.09
[프로그래머스] 월간 코드 챌린지 시즌1 - 두 개 뽑아서 더하기 / python  (2) 2020.11.09
  1. 문제 설명
  2.  
  3. 입출력 예
  4.  
  5. 나의 풀이
  6. 다른 사람의 풀이
'알고리즘/문제풀이' 카테고리의 다른 글
  • [프로그래머스] Summer/Winter Coding(~2018) - 점프와 순간 이동 / python
  • [프로그래머스] Summer/Winter Coding(~2018) - 영어 끝말잇기 / python
  • [프로그래머스] 2019 KAKAO BLIND RECRUITMENT - 실패율 / python
  • [프로그래머스] 월간 코드 챌린지 시즌1 - 두 개 뽑아서 더하기 / python
SeongOnion
SeongOnion
서버는 꺼지지 않아요
SeongOnion
조무래기 코딩
SeongOnion
전체
오늘
어제
  • 분류 전체보기 (167)
    • 알고리즘 (81)
      • 이론 (8)
      • 문제풀이 (73)
    • 언어 (15)
      • Python (9)
      • JavaScript (1)
      • JAVA (5)
    • 데이터베이스 (5)
    • 프레임워크 (15)
      • Django (7)
      • Spring (8)
    • 그 외 공부 (38)
      • 운영체제 (1)
      • 자료구조 (14)
      • 네트워크 (5)
      • CS (2)
      • 기타 (7)
      • 트러블 슈팅 (9)
    • 프로젝트 (0)
    • 개발자취 (8)
    • 회고 (3)
    • 주저리주저리 (1)
    • 기타 (비개발) (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준
  • 그리디알고리즘
  • 에라토스테네스의 체
  • 회고
  • 데이터베이스
  • DP
  • 브루트포스
  • 트러블 슈팅
  • 소수
  • 컨트리뷰트
  • 알고리즘
  • 정렬 알고리즘
  • 오픈소스
  • BFS
  • 큐
  • 프로그래머스
  • 스택
  • 투 포인터 알고리즘
  • 자바
  • Django
  • 개발자
  • 장고
  • DRF
  • 파이썬
  • 코딩
  • spring
  • BFS/DFS
  • 코딩테스트
  • 이진탐색
  • 웹

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
SeongOnion
[프로그래머스] Summer/Winter Coding(~2018) - 예산 / python
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.