-
[프로그래머스 Level 1] 과일 장수 (JavaScript)Coding Test/JavaScript 2024. 12. 2. 17:30
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/135808
입출력 예
k m score result 3 4 [1, 2, 3, 1, 2, 3, 1] 8 4 3 [4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2] 33 풀이
function solution(k, m, score) { let answer = 0; const sorted = score.sort((a, b) => b - a); for(let i=0; i < Math.floor(score.length / m); i++) { const group = sorted.slice(i*m, (i+1) * m); const min = group[m-1]; answer += min * m; } return answer; }
함수 solution은 세 개의 매개변수를 받는다.
1. 상자의 개수: k
2. 한 상자에 담을 과일의 개수: m
3. 과일들의 가격을 나타내는 배열: score
먼저 과일들의 가격을 sort 메서드를 사용해 과일들의 가격을 내림차순으로 정렬했다.
이후 for 반복문을 통해 상자에 과일을 담았다.
Math.floor(score.length / m)은 과일을 몇 개의 상자에 나눠 담을 수 있는지를 계산한다.
floor을 사용했기 때문에, 나머지는 버린다.
sorted.slice(i*m, (i+1)*m)은 i번째 상자에 담을 과일을 잘라서 가져온다.
min 변수를 사용해 상자에 담긴 과일 중 가장 가격이 낮은 과일을 찾는다.
여기서 group[m-1]은 group 배열에서 가장 마지막에 있는 과일로, 가격이 가장 낮은 과일이다.
answer += min * m은 상자에 담긴 과일의 개수만큼 최소 가격을 더한 후 answer에 누적한다.
이후 계산된 총 금액인 answer를 반환한다.
'Coding Test > JavaScript' 카테고리의 다른 글
[프로그래머스 Level 1] 모의고사 (JavaScript) (0) 2024.12.02 [프로그래머스 Level 1] 기사단원의 무기 (JavaScript) (0) 2024.12.02 [프로그래머스 Level 1] 2016년 (JavaScript) (0) 2024.12.02 [프로그래머스 Level 1] 폰켓몬 (JavaScript) (0) 2024.11.25 [프로그래머스 Level 1] 카드 뭉치 (JavaScript) (1) 2024.11.25