티스토리 뷰

programmers. Level1

javascript - 예산

코딩하는 둥아 2021. 10. 25. 16:36
728x90

[Input]

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

각 부서별로 신청한 금액을 작은 순으로 나열하여, 정해진 예산 안에서 가장 많은 부서에 지원하면 되겠다! 고 생각했다.

처음에는 sort를 바로 생각하지 못하고, for문을 돌려 가장 최소값을 찾아서 answer에 더해주고 d라는 신청 금액 배열에서 제외하여 다시 최소값을 찾는 비효율적인 방법을 생각했다.

 

그런데 sort 한번이면 for문 한 번으로 답을 찾을 수 있다.

 

이 때, d.sort() 로 sorting을 해버리면, 숫자의 대소를 비교하는 것이 아니라 문자의 유니코드를 기준으로 정렬하여 결과값이 틀리게 나온다. 그래서 우리는 숫자 오름차순으로 정렬하기 원하기 때문에 아래와 같은 sort function을 넣어준다.

 

[sort  기본 사용 방법]

// 오름차순
d.sort(function(a,b) {
	return a-b;
});

// 내림차순
d.sort(function(a,b) {
	return b-a;
});

// 객체 정렬하기
const arr = [
  {name: 'banana', price: 3000}, 
  {name: 'apple', price: 1000},
  {name: 'orange', price: 500}
];

arr.sort(function(a, b) {
  return a.price - b.price;
});

[내 코드]

function solution(d, budget) {
    var answer = 0;
    var isPossible = 0;
    d.sort(function(a,b) {
        return a-b;
    });
    for(var i=0 ; i<d.length ; i++) {
        isPossible += d[i];
       if(isPossible <= budget) {
           answer++;
       } else {
           return answer;
       }
    }
    return answer;
}
728x90

'programmers. Level1' 카테고리의 다른 글

javascript - 3진법 뒤집기  (0) 2021.11.03
javascript - 폰켓몬  (0) 2021.11.03
javascript - 모의고사  (0) 2021.11.01
javascript - 소수 만들기  (0) 2021.10.28
javascript - 숫자 문자열과 영단어  (0) 2021.10.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함