프로그래머스 - 예산

Kyle·2022년 9월 11일
0

Algorithm

목록 보기
2/4

배열에서 sort() 함수에 대해서 알고 있다고 생각했다.

오늘의 문제에 대한 코드, 그리고 아차모먼트를 확인하자

오늘의 문제는 프로그래머스 Lv1의 '예산' 문제이다.

비교적 간단하게 생각을 했다.

배열 d를 오름차순으로 정렬해서 budget에서 값을 빼주고 빼줄 때마다 count를 하나씩 더해주면 되는 것 아닐까? budget이 음수로 떨어진다면 하나의 count가 잘못 더해진 거니까 그런 상황에서는 빼야겠네

function solution(d, budget) {
   const arr = d.sort();
   let count = 0;
   for (let i = 0; i < arr.length; i++) {
       budget -= arr[i];
       count += 1;
       if (budget < 0) {
           count -= 1;
           break;
       }
   }
   return count;
}

위의 생각을 가지고 다음과 같이 코드를 작성하였다.
테스트 코드도 통과해서 채점을 해봤는데

어림도 없었다

단순하게 몇군데에 지원을 해줬냐가 포인트기 때문에 작은 수부터 좌르륵 담으면 되는 거 아닌가?

로직에서 문제를 찾기 전에 내가 사용한 메서드를 내가 정확하게 사용한 것인지 확인하고 싶어 콘솔을 찍어봤다.

콘솔에는 테스트 코드에 해당하는 내용들은 내가 원하는대로 찍혀있었다.

그 이후에는 MDN에서 sort()를 다시 찾아봤다.

sort() 메서드는 유니코드를 기준으로 정렬하기 때문에 당연히 실패했던 것이다.

아마 멋사 운영진들에게 이 문제를 고민이라고 올렸다면 빠따를 맞았겠지

다시 돌아가서 기존의 코드 d.sort()에 오름차순을 위하여 d.sort((a,b)->a-b)로 수정을 해보자.

테스트 통과!

아차모먼트

sort()뿐만 아니라 다른 메서드들도 무지성으로 사용하고 있었던 것은 아닌지 한 번 돌아보는 계기가 되었다

profile
불편함을 고민하는 프론트엔드 개발자, 박민철입니다.

0개의 댓글