091

[JAVA] 명예의 전당(1) 본문

Coding Test/Programmers(프로그래머스)

[JAVA] 명예의 전당(1)

공구일 2025. 7. 2. 01:58
728x90

🔍자바 : 연습문제 . 명예의 전당(1)

 

01. 코드 기획 단계 

- 명예의 전당 honor 배열을 만들어 명예의 전당 배열과 k까지의 answer 최솟값을 넣어줍니다. 그 뒤 값들은 명예의 전당 최솟값과 비교한 뒤 최솟값보다 작으면 변화없이 answer에 넣어주고, 크다면 최솟값을 변화해준 뒤 다시 최솟값을 구하여 answer에 넣어줍니다.

 

02. 코드 실행 및 오류 잡기

import java.util.*;

class Solution {
    public int[] solution(int k, int[] score) {
        int[] answer = new int[score.length];
        int[] honor = new int[k];
        int min = score[0];
        if(k < score.length){
            for(int i = 0; i < k; i++){ //명예의 전당 input 다 보이는 곳까지
            honor[i] = score[i];
            min = Math.min(min, score[i]);
            answer[i] = min; //명예의 전당 최솟값
            }

            Arrays.sort(honor); //명예의 전당, 오름차순
            for(int i = k; i < score.length; i++){
                if(honor[0] >= score[i]){
                    answer[i] = honor[0];
                } else {
                    honor[0] = score[i];
                    Arrays.sort(honor); //인덱스 0값이 최솟값이 됨
                    answer[i] = honor[0];
                }
            }
        } else {
           for(int i = 0; i < score.length; i++){
                honor[i] = score[i];
                min = Math.min(min, score[i]);
                answer[i] = min; 
            } 
        }
        return answer;
    }
}

 

03. 정리

- 명예의 전당 k가 score.length보다 더 큰 경우도 있기 때문에 위 처럼 명예의 전당 길이 만큼 나타낸 뒤 값을 넣을 예정이라면 따로 조건을 넣어줘야합니다.

728x90