Level 1. 과일 장수
https://school.programmers.co.kr/learn/courses/30/lessons/135808
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 통과
2. 통과 코드
3. 풀이
(1) 주어진 배열 score를 Arrays.sort로 오름차순 정렬한다.
(2) 오름차순 정렬한 score를 for문으로 마지막 인덱스부터 가져온다.
이렇게 하면 주어진 배열 score를 내림차순 정렬한 효과가 있다. (가장 큰 값부터 차례로 가져온다.)
(3) StringBuilder box에 가장 큰 값부터 차례로 append 한다.
(4) box의 길이가 m과 같아지면 answer에 (한 상자에 담긴 사과 개수) * (해당 상자에서 가장 낮은 점수)를 더해준다.
box의 가장 마지막에 더해진 값이 해당 상자에서 가장 낮은 점수다.
왜냐하면 큰 값부터 차례로 가져오기 때문이다.
(5) answer에 더했다면 box를 초기화시키고 위 과정을 반복한다.
(6) 이렇게 하면 문제에서 요구하는 최대 이익이 나온다.
왜냐하면 가치가 높은 사과부터 차례로 담았기 때문에 낮은 점수의 사과는 나중에 만들어지는 box에 몰리기 때문이다.
결국 상자에 사과를 담을때마다 남아있는 사과들 중 점수가 높은 순서대로 담으면 최대 이익이 난다.
'공부해 codingTest' 카테고리의 다른 글
프로그래머스 JAVA Level 1. 완주하지 못한 선수 (0) | 2023.02.14 |
---|---|
프로그래머스 JAVA Level 1. 로또의 최고 순위와 최저 순위 (0) | 2023.02.13 |
프로그래머스 JAVA Level 1. 실패율 (0) | 2023.02.12 |
프로그래머스 JAVA Level 1. 소수 만들기 (0) | 2023.02.12 |
프로그래머스 JAVA Level 1. 가장 가까운 같은 글자 (0) | 2023.02.11 |