알고리즘 공부/코딩테스트(프로그래머스)

[프로그래머스 Level 1] 과일 장수 (Java 자바) 풀이 방법

yepppi 2023. 3. 29. 10:20
반응형
SMALL

 

프로그래머스 <과일 장수> 문제 보기

https://school.programmers.co.kr/learn/courses/30/lessons/135808

 

프로그래머스

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

programmers.co.kr

 

 

프로그래머스 <과일 장수> 문제 풀이

import java.util.*;

class Solution {
    public int solution(int k, int m, int[] score) {
        int answer = 0;
        
        Integer[] scoreList = Arrays.stream(score).boxed().toArray(Integer[]::new);
        Arrays.sort(scoreList,Collections.reverseOrder());
        
        for (int i=0; i<scoreList.length; i++){
            if ((i+1)%m == 0){
                answer += (scoreList[i]*m);
            }
        }
        return answer;
    }
}

 

 

  • 값이 가장 크기 위해서는 큰 사과부터 상자에 담아야 함
  • m번째 사과라면 상자가 다 찼다는 의미기에, 해당 사과의 score로 가격을 계산해서 answer에 더해줌
  • Arrays.sort() 함수에서 내림차순으로 정렬하기 위해서는 Collections.reverseOrder() 함수를 사용하면 됨
  • Collections.reverseOrder() 함수는 byte, char, double, short, long, int, float와 같은 PrimitiveType의 배열에는 적용 불가, int의 경우에는 Integer와 같은 Wrapper Class를 사용해야 함
  • int[] 배열을 Integer[] 배열로 변형해주었음

 

 

처음에는 Java에서 배열을 정렬하는 법을 몰라 구글링을 통해 Arrays.sort() 함수를 알아냈고,

프로그래머스에서 이 함수를 사용하기 위해서는 import java.util.Arrays; 구문을 직접 적어주어야 함을 알았다.

또, 내림차순 정렬을 위해서는 Collections.reverseOrder() 함수를 사용해야 함을 알았고,

해당 함수를 사용하기 위해서는 Wrapper Class를 사용해야 된다는 점을 배웠다.

내림차순 정렬 과정 없이 오름차순으로도 문제를 풀 수는 있었겠지만, 분명 알아두어야 하는 부분이라 공부하고 풀었다.

반응형
LIST