Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 에라토스테네스의 체
- 후위 표기법
- 규칙찾기
- Java
- HashSet
- 쿼드압축 후 개수세기
- 어려웠던 문제
- 영문자 확인
- 완전탐색
- 알고리즘
- Stack
- 최소공배수
- 완전 탐색
- 반복문
- Dynamic Programming
- 메뉴리뉴얼
- HashMap
- dfs
- 튜플
- 동적계획법
- 문자열
- 순열
- 점프와 순간이동
- 2017 카카오 코드
- 보이어무어
- fragment identifier
- 조합
- python
- pandas
- 프로그래머스
Archives
- Today
- Total
csmoon1010의 SW 블로그
[200516] 예산 - Summer/Winter Coding(~2018)(level1) 본문
1. 문제이해
- 배열 d : 부서별 신청한 금액 배열
- budget : 예산
- 예산 내 지원할 수 있는 부서 개수의 최대값 구하기
(단, 일부금액만 지원하는 것은 불가)
2. 전략
- Greedy algorithm 이용 : 각 단계에서 "가장 좋은 것" 선택
(최대한 많은 부서 지원 = 신청 금액이 적은 부서부터 선택)
- d를 오름차순 배열한 순서대로 지원해주면 됨
- 지원해줄 때마다 budget을 줄여가며 신청금액이 budget을 넘지 않을 때까지만 진행(for문)
3. 참고사항
- 유사, 심화 문제 : Fractional Knapsack Problem
- 문제 : 물건들의 무게wi, 가치vi + 배낭무게 W --> 최대이득으로 물건 넣기
(단, 물건의 분할이 가능 = Fractional)
- 해결방법 : 각 단계에서 "가장 좋은 것" = 무게당 가치가 가장 높은 것(vi/wi)부터
4. 코드
import java.util.*;
class Solution {
public int solution(int[] d, int budget) {
int answer = 0;
//Greedy
Arrays.sort(d);
for(int a : d){
if(a <= budget){
budget -= a;
answer++;
}
else break;
}
return answer;
}
}
'Coding Test > 프로그래머스' 카테고리의 다른 글
[200519] [1차]다트 게임 - 2018 KAKAO BLIND RECRUITMENT(level1) (0) | 2020.05.19 |
---|---|
[200519] 실패율 - 2019 KAKAO BLIND RECRUITMENT(level1) (0) | 2020.05.19 |
[200516] 직사각형 별찍기 - 연습문제(level1) (0) | 2020.05.16 |
[200515] x만큼 간격이 있는 n개의 숫자 - 연습문제(level1) (0) | 2020.05.15 |
[200515] 행렬의 덧셈 - 연습문제(level1) (0) | 2020.05.15 |
Comments