[lv.1] 과일장수 | 프로그래머스
[lv.1] 과일장수 | 프로그래머스
📋 [ 프로그래머스 ] 시리즈 몰아보기 (17)
✏️ (lv.1) : 과일장수
사과를 포장하는데 이 사과는 상태에 따라 1점부터 k점까지의 점수로 분류한다. k점이 최상품이며 1점이 최하품이다. 사과 한 상자의 가격은 다음과 같이 결정된다.
- 한 상자에 사과를
m개씩 담아 포장한다. - 상자에 담긴 사과 중 가장 낮은 점수가
p (1 <= p <= k)인 경우 사과 한 상자의 가격은p * m이다. 가능한 많은 사과를 팔았을 때 최대로 이익이 나게끔 사과를 배분하려고 한다.(사과는 상자단위로만 판매하며 남는 사과는 버린다.)
사과의 최대점수 k, 한 상자에 들어가는 사과의 수 m, 사과들의 점수 score가 주어질 때 최대 이익을 return하는 solution을 작성하라.
3 <=
k<= 93 <=
m<= 107 <=
score의 길이 <= 1,000,000- 1 <= `score[i] <= k
이익이 발생하지 않는 경우 0을 return
점수가 높은 사과들끼리 담는것이 이득이므로 score를 내림차순 정렬하여 m만큼 자르고 분리된 배열의 원소 중 최소값을 구해 가격을 계산한다.
sort()의 callback 인자에(a, b) => { return b - a }를 전달하면 내림차순으로 정렬된다.로직을 더 이상 사과를 담을 수 없을때 까지
while문으로 반복한다.slice()메소드를 이용하며 원본인score배열을 변형시키지 않기 위해storedBox에 자른 배열을 선언해준다.- 원본이 변하지 않으므로 현재 사과의 index를 대표하는
target을 선언한다. target은 매 반복시마다m만큼 증가시킨다. 사과상자에는m만큼 사과가 들어가기 때문에 한번 사과를 담으면m만큼 index가 이동하기 때문이다.
- 원본이 변하지 않으므로 현재 사과의 index를 대표하는
제대로 사과를 담았다면 분리된 배열을 순회하며
Math.min()메소드를 활용해 점수의 최소값을 구한다.- 만약 최소값이
k보다 클 경우 최소값을k로 초기화한다.
- 만약 최소값이
| 1 | function solution(k, m, score) { |
| 2 | var answer = 0; |
| 3 | score.sort((a, b) => { |
| 4 | return b - a; |
| 5 | }); |
| 6 | |
| 7 | let target = 0; |
| 8 | let min = 0; |
| 9 | while (target <= score.length) { |
| 10 | let storedBox = score.slice(target, target + m); |
| 11 | target += m; |
| 12 | |
| 13 | if (storedBox.length === m) { |
| 14 | for (let i = 0; i < storedBox.length - 1; i++) { |
| 15 | min = Math.min(storedBox[i], storedBox[i + 1]); |
| 16 | } |
| 17 | if (min > k) { |
| 18 | min = k; |
| 19 | } |
| 20 | answer += min * m; |
| 21 | } |
| 22 | } |
| 23 | |
| 24 | return answer; |
| 25 | } |
| 26 |
👨💻 관련 포스트
[lv.1] 개인정보 수집 유효기간
[lv.1] 개인정보 수집 유효기간
프로그래머스 lv.1 개인정보 수집 유효기간 풀이 with javascript. 해당 문제에서 한달은 28일로 고정이다. 따라서 today와 privacies 각 원소(개인정보)의 날짜를 년, 월, 일에 각 단위에 해당하는 수 * 28을 수행하여 일 단위로 변환한 후 terms에 해당하는 수를 더해 문제를 해결한다.
2023-05-30
[lv.1] 성격 유형 검사하기 | 프로그래머스
[lv.1] 성격 유형 검사하기 | 프로그래머스
프로그래머스 lv.1 성격 유형 검사하기 풀이 with javascript. javascript의 객체를 이용해 성격 유형(이하 MBTI)별 획득 점수를 기록하고 MBTI의 value를 비교해 문제를 해결한다.
2023-06-01
[lv.2] 주차 요금 계산 | 프로그래머스
[lv.2] 주차 요금 계산 | 프로그래머스
프로그래머스 lv.2 주차 요금 계산 풀이 with javascript. javascript의 객체를 이용해 차량의 입/출차 시간을 기록, 해당 객체를 순회하며 주차시간을 주어진 요금표에 맞게 정산하는 것으로 문제를 해결한다.
2023-06-04
💡 로그인 하지 않아도 댓글을 등록할 수 있습니다!