https://school.programmers.co.kr/learn/courses/30/lessons/135808?language=javascript
1. 문제에 대한 이해
- 우리가 풀어야 할 문제는 무엇인가?
과일 장수가 얻을 수 있는 최대 이익을 구하라 - 주어진 자료는 무엇인가?
k: 사과의 최대점수
m: 한 상자에 들어가는 사과의 수
score: 사과들의 점수 - 조건은 무엇인가?
3 ≤ k ≤ 9
3 ≤ m ≤ 10
7 ≤ score의 길이 ≤ 1,000,000
1 ≤ score[i] ≤ k
이익이 발생하지 않는 경우에는 0을 return 해주세요.
2. 계획
- 주어진 score를 내림차순 정렬한다.
- m 만큼 인덱스를 이동했을때 값에 m을 곱하고 이 값들을 더한다.
3. 실행
- 풀이 계획을 실행하고, 각 단계가 올바른지 점검하라.
const solution = (k, m, score) => {
const scores = score.sort((a, b) => b - a);
let answer = 0;
for (let i = m - 1; i < scores.length; i += m) {
answer += (scores[i] * m)
}
return answer;
};
test('solution', () => {
expect(solution(3, 4, [1, 2, 3, 1, 2, 3, 1])).toEqual(8);
expect(solution(4, 3, [4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2])).toEqual(33);
expect(solution(4, 4, [4, 4, 3, 3, 3, 2, 2, 2, 1])).toEqual(20);
expect(solution(9, 2, [7, 7, 6, 5, 2])).toEqual(24);
expect(solution(7, 2, [7, 7, 5, 3, 3, 3, 1])).toEqual(26);
});
'코테연습' 카테고리의 다른 글
177. 콜라문제 Javascript (0) | 2023.01.20 |
---|---|
176. 가장 가까운 같은 글자 Javascript (0) | 2023.01.19 |
175. 스킬트리 Javascript (0) | 2023.01.09 |
174. 2xn 타일링 (1) | 2023.01.09 |
173. 연속 부분 수열 합의 개수 Javascript (0) | 2023.01.06 |
댓글