본문 바로가기
코테연습

176. 과일장수 Javascript

by hxunz 2023. 1. 18.

https://school.programmers.co.kr/learn/courses/30/lessons/135808?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

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

댓글