[프로그래머스/Java] - 명예의 전당(1)

seb Incode·2023년 8월 5일
0
post-thumbnail

문제

문제 링크로 넘어가기

접근 방법

굳~이 길이가 k인 명예의 전당 배열을 만들진 않고, 그냥 배열에 통으로 넣었다.

  1. 점수를 일단 넣는다.
  2. 내림차순 정렬
  3. 배열에 저장된 점수의 개수 >= k이면
    3-1. k번째 점수가 최하위
  4. 배열에 저장된 점수의 개수 < k 이면
    4-1. 오른쪽 끝에 있는 점수가 최하위

소스코드

import java.util.*;

class Solution {
    public int[] solution(int k, int[] score) {
        int[] answer = new int[score.length];
        ArrayList<Integer> winners = new ArrayList<>();
        
        //1. score의 길이만큼 반복
        for(int i=0;i<score.length;i++){
            //2. 명예의전당 배열에 i번째 점수를 넣는다
            winners.add(score[i]);
            //3. 내림차순 정렬한다.
            Collections.sort(winners, Collections.reverseOrder());
            //4. 명에의전당 배열 k-1번째 원소를 answer에 저장한다.
            if (winners.size() < k) {
                answer[i] = winners.get(winners.size()-1);
            }
            else{
                answer[i] = winners.get(k-1);
            }
        }
       
        
        return answer;
    }
}

필요했던 개념

Collections.sort()

Collections.sort(arraylist); //오름차순
Collections.sort(arraylist, Collections.reverseOrder());// 내림차순

0개의 댓글