티스토리 뷰


문제의 요는 사과를 어떻게 포장해야 최대 이익을 낼 수 있는가이다.
따라서, 높은 점수의 사과를 최대한 많이 포장해야 한다.
사과를 적절히 포장해 점수를 계산하고, 이익을 구해보기 위한 로직은 다음과 같다.
1. 사과 점수 배열을 내림차순으로 정렬한다.
2. 내림차순 사과를 m개씩 묶는다.
3. 가장 낮은 점수의 사과를 찾아 가격을 계산한다.
4. 모든 상자의 가격을 합한 최대 이익을 구한다.
function solution(k, m, score) {
score.sort((a, b) => b - a);
let maxProfit = 0;
for (let i = 0; i < score.length; i += m) {
if (i + m <= score.length) {
const box = score.slice(i, i + m);
const minScore = box[m - 1];
maxProfit += minScore * m;
}
}
return maxProfit;
}
해당 로직을 코드로 옮기면 다음과 같지만,
reduce 메서드도 사용해서 풀이해보았다.
reduce 사용
function solution(k, m, score) {
score.sort((a, b) => b - a);
return score.reduce((acc, _, i, arr) => {
if ((i + 1) % m === 0) {
acc += arr[i] * m;
}
return acc;
}, 0);
}
해당 문제는 다른 사람의 코드도 비슷한 유형인 것 같다.
여기서 더 짧아지면 가독성이 좋지 않아보인다.
'Oops, All Code! > 🤯 Oops, My Algorithm!' 카테고리의 다른 글
♡̈ 11. 프로그래머스:: 푸드 파이트 대회 (0) | 2024.07.10 |
---|---|
♡̈ 10. 프로그래머스:: 옹알이(2) (0) | 2024.07.10 |
♡̈ 08. 프로그래머스:: 추억 점수 (0) | 2024.07.10 |
♡̈ 07. 프로그래머스:: 둘만의 암호 (0) | 2024.07.08 |
♡̈ 06. 프로그래머스:: 대충 만든 자판 (0) | 2024.07.08 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 트러블슈팅
- 대학생플리마켓
- react
- 코딩테스트
- 비즈플리마켓
- 플리마켓후기
- 우아한테크코스
- 프로토타입
- 카페추천
- 안성스타필드
- 회고
- 소사벌맛집
- 경험플리마켓
- 소사벌
- 어른의어휘공부
- 타입좁히기
- 일급객체
- js
- 어휘력
- 프리코스
- 피어피드백
- typescript
- 책추천
- 서평
- javascript
- 대학생팝업스토어
- 도서추천
- 카드뉴스
- 프론트엔드
- 도서리뷰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함