티스토리 뷰
문제의 요는 사과를 어떻게 포장해야 최대 이익을 낼 수 있는가이다.
따라서, 높은 점수의 사과를 최대한 많이 포장해야 한다.
사과를 적절히 포장해 점수를 계산하고, 이익을 구해보기 위한 로직은 다음과 같다.
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
- 피어피드백
- typescript
- js
- 카페추천
- 안성스타필드
- 트러블슈팅
- 소사벌
- 소사벌맛집
- 회고
- 경험플리마켓
- 우아한테크코스
- 코딩테스트
- 도서리뷰
- 비즈플리마켓
- 네이버부스트캠프
- 대학생팝업스토어
- javascript
- react
- 일급객체
- 서평
- 프로토타입
- 도서추천
- 프론트엔드
- 대학생플리마켓
- 카드뉴스
- 타입좁히기
- 어른의어휘공부
- 어휘력
- 프리코스
- 책추천
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함