알고리즘 풀이 방법입니다.
문제(Problem) -> 생각(Think) -> 해결책(Solution) -> 리뷰(Review) 를 통해서 정리해서 작성합니다.
Problem📄

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

 

프로그래머스

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

programmers.co.kr


Think🤔

 

처음에 int 타입을 Arrays.sort를 Comparator 메소드를 재정의해서 하려고 했으나

int 타입은 Comparator로 재정의 못함 , Integer로 가능

그래서 int 타입하고 Integer 타입의 차이점을 찾아보고

이를 재정의 할 수 있게 바꿔줌.


Solution✍
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;

// int 타입은 Integer 타입 배열로 변경해줘야 역순 출력 가능
// int : 자료형 , 산술 연산 가능 , null로 초기화 불가능
// Integer : 래퍼 클래스 , Unboxing하지 않을 경우 연산 불가 , null 값 가능
public class FruitDealer {
    public static void main(String[] args) {
        int k = 4, m = 3;
        int[] score = {4,1,2,2,4,4,4,4,1,2,4,2};
        /*
        boxed() 메소드는 intStream 같이 원시 타입 즉 자료형으로 전환하여 실행 가능하게 하는 함수
        Integer[] scoreArr = Arrays.stream(score).boxed().toArray(Integer[]::new);
        Arrays.sort(scoreArr, Collections.reverseOrder());
        */
        int answer = 0;
        int box = score.length/m;
        int minScore = 0;
        Arrays.sort(score);
        System.out.println(Arrays.toString(score));
        System.out.println("박스 개수 : " + box);
        for(int i=1; i<=box; i++){ // 현재 박스 갯수 4개
            minScore = score.length - (m*i);
            System.out.println("제일 작은 사과의 점수 : " + minScore);
            answer += score[minScore] * m;
        }
        System.out.println(answer);
    }
}

Review🤩

스택오버플로우에 ArrayUtils 를 사용하는 방법도 있다.

 

외부 라이브러리 사용

build.gradle에 의존성 추가

 

implementation 'org.apache.commons:commons-lang3:3.0'

 

+ Recent posts