728x90
반응형
[level 1] 예산 - 12982
성능 요약
메모리: 10.1 MB, 시간: 0.02 ms
구분
코딩테스트 연습 > Summer/Winter Coding(~2018)
채점결과
정확성: 100.0
합계: 100.0 / 100.0
문제 설명
S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다.
물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다.
부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요.
제한사항
- d는 부서별로 신청한 금액이 들어있는 배열이며, 길이(전체 부서의 개수)는 1 이상 100 이하입니다.
- d의 각 원소는 부서별로 신청한 금액을 나타내며, 부서별 신청 금액은 1 이상 100,000 이하의 자연수입니다.
- budget은 예산을 나타내며, 1 이상 10,000,000 이하의 자연수입니다.
입출력 예
dbudgetresult
[1,3,2,5,4] | 9 | 3 |
[2,2,3,3] | 10 | 4 |
👉나의 생각
일단 보자마자 정렬을 해서 풀어야겠다고 생각이 들었다.
정렬을 하고 부서금액을 하나씩 더해서 예산보다 크면 멈추고 아니면 부서갯수를 세보자 !
📍나의 풀이
def solution(d, budget):
sd = sorted(d)
answer = 0
sum = 0
for i in sd :
sum += i
if sum > budget :
break
answer += 1
return answer
📍📍다른풀이
빼는걸로도 풀어봤다
예산에서 부서지원금을 하나씩 빼고 예산보다 작아지면 멈추고 아니면 부서갯수세주기!
def solution(d, budget):
sd = sorted(d) # 먼저 정렬을 한다
answer = 0
for i in sd:
budget -= i # 예산에서 부서별지원금빼기
if budget < 0: #0보다 작아진다면 더하지 않고 멈추기
break
answer += 1 # 0보다 작지않다면 1씩더해주기
return answer # 예산이 모자르기 전에 지원한 부서의 개수
728x90
반응형
'알고리즘문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Python][level 1] 소수 만들기 - 12977 (2) | 2023.01.13 |
---|---|
[프로그래머스/Python/level 1] 체육복 - 42862 (0) | 2023.01.11 |
[프로그래머스/파이썬][level 0] 배열 회전시키기 - 120844 (0) | 2022.12.25 |
[프로그래머스][파이썬]배열의 유사도 - 120903 (0) | 2022.12.23 |
댓글