프로그래머스

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

코 밑 2024. 3. 30. 04:30
Contents

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

 

프로그래머스

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

programmers.co.kr

 

이것도 문제가 너무너무 길다.

근데 막 어렵진 않았다.

그냥 명예의 전당이 있는데 상위 티어 k명만 올라갈 수 있다.

그리고 발표 점수는 명예의 전당 중 가장 낮은 점수가 된다.

 

import java.util.*;

class Solution { // 명예의 전당(1)
	public int[] solution(int k, int[] score) {
		int[] answer = new int[score.length];
		ArrayList<Integer> list = new ArrayList<>(); // 명예의 전당 자리

		for (int i = 0; i < score.length; i++) {
			if (list.size() < k) { // 일단 값들 넣고 봐
				list.add(score[i]);
				Collections.sort(list, Collections.reverseOrder()); // 마지막엔 내림차순 정렬
			} else if (Collections.min(list) < score[i]) { // 최소 값보다 score의 값이 커지면
				list.remove(k - 1); // 마지막 값 제거
				list.add(score[i]); // 값 추가
				Collections.sort(list, Collections.reverseOrder()); // 마지막엔 내림차순 정렬
			}
			answer[i] += Collections.min(list); //최소 값이 발표 점수
		}
		
		return answer;
	}
}

 

코드를 보면 명예의 전당에 등극한 사람들을 어레이리스트에 넣어준다

리스트의 크기가 k보다 작다면 일단 점수를 계속 넣는다

그리고 가장 낮은 점수 비교를 하기 위해 내림차순 정렬을 해준다

 

만약 리스트의 최소값보다 큰 값이 들어오게 되면 마지막 값을 제거한다

그리고 내림차순 정렬을 해준다

 

answer의 각 자리에 리스트의 최소값을 넣어준다

 

ezez