[프로그래머스] 예산
2020. 6. 16. 15:16ㆍ프로그래머스/LEVEL 1
import java.util.*;
class Solution {
public int solution(int[] d, int budget) {
int answer = 0;
Arrays.sort(d);
for(int i=0; i<d.length; i++){
if(budget-d[i]>=0){
answer ++;
budget -= d[i];
} else{
break;
}
}
return answer;
}
}
1. 최대한 많은 부서에게 예산을 할당해 주어야 하므로, 필요한 예산이 적은 부서부터 차례로 할당해 주어야한다.
2. 예산이 적은순으로 정렬을한다.
3. 주어진 예산에서 할당이 가능하면 할당하고 answer++
4. 할당을 하면 예산이 줄어드므로 해당 예산만큼 budget에서 빼주고 계속 진행한다.
5. 할당이 안되는 부서가 나오면 이후의 부서들도 모두 할당해줄 수 없으므로 break 해준다. (필요한 예산이 적은순으로 정렬했으므로 가능)
----------------------------------------------------------------------------------------------------------------------------
자바스크립트
function solution(d, budget) {
var answer = 0;
function num(a,b){
return a-b;
}
d.sort(num);
for (var i=0; i<d.length; i++) {
if(budget>=d[i]){
answer++;
budget=budget - d[i];
}else{
break;
}
}
return answer;
}
1. 처음에 d.sort()로 풀었을때 풀리지 않아 이유를 몰랐는데, 자바스크립트의 sort()함수는 기본적으로 아스키코드 값을 기준으로 정렬한다고 한다. 즉, 100 과 20을 정렬할때 2가 1 보다 아스키코드값이 크므로 100, 20 의 순서로 정렬이 된다.
2. 따라서 그냥 sort()로 사용하는 경우는 보통 문자열을 정렬할 때 이고, 숫자를 정렬할 때는 따로 정렬 기준을 함수로 넣어주어야 한다.
'프로그래머스 > LEVEL 1' 카테고리의 다른 글
[프로그래머스] x만큼 간격이 있는 n개의 숫자 (0) | 2020.06.17 |
---|---|
[프로그래머스] 문자열 다루기 기본 (0) | 2020.06.17 |
[프로그래머스] 하샤드 수 (0) | 2020.06.17 |
[프로그래머스] 자릿수 더하기 (0) | 2020.06.16 |
[프로그래머스] 행렬의 덧셈 (0) | 2020.06.16 |