알고리즘 풀이 방법입니다.
문제(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'
'Algorithm' 카테고리의 다른 글
[프로그래머스] 코딩테스트 연습연습문제추억 점수 (0) | 2023.10.16 |
---|---|
[프로그래머스] 명예의 전당 (1) (0) | 2023.01.02 |
[프로그래머스] 가장 가까운 같은 글자 (0) | 2022.12.30 |
[프로그래머스] 크기가 작은 부분 문자열 (0) | 2022.12.29 |
[프로그래머스] 콜라 문제 (0) | 2022.12.29 |