- 내 풀이
import java.util.*;
class Solution {
public int[] solution(int k, int[] score) {
int[] answer = {};
// score 만큼 진행되기때문에
answer = new int[score.length];
List<Integer> list = new ArrayList<>();
for(int i = 0; i<score.length; i++){
// list에 요일 순서대로 값을 넣어줌
list.add(score[i]);
// Collection.reverse를 바로 하면 제대로 된 역순이 되지 않음
// 그래서 sort해서 오름차순으로 변경하고 역순으로 다시 변경함
Collections.sort(list);
Collections.reverse(list);
// list.size가 찾으려는 k번째만큼 존재한다면
if(list.size() >= k){
answer[i] = list.get(k-1);
}else{
// 존재하지 않는다면 가지고 있는 점수 중 최하위를 return
int min = list.get(0);
for (int j = 0; j < list.size(); j++) {
min = Math.min(min, list.get(j));
}
answer[i] = min;
}
}
return answer;
}
}
어려운 문제는 아닌데
항상 느끼는거지만 문제를 참 이상하게 낸다
- 다른 사람 풀이
import java.util.*;
class Solution {
public int[] solution(int k, int[] score) {
int[] answer = new int[score.length];
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
int temp = 0;
for(int i = 0; i < score.length; i++) {
priorityQueue.add(score[i]);
if (priorityQueue.size() > k) {
priorityQueue.poll();
}
answer[i] = priorityQueue.peek();
}
return answer;
}
}
많은 분들이 PriorityQueue 라는 class 를 사용하여 예제를 풀이하였다
PriorityQueue : 우선순위 큐 라고 하여 우선순위가 높은것을 먼저 출력해준다.
'프로그래머스 > [프로그래머스 - JAVA] Lv.1' 카테고리의 다른 글
[프로그래머스 - JAVA] 로또의 최고 순위와 최저 순위 (0) | 2023.04.09 |
---|---|
[프로그래머스 - JAVA] 과일 장수 (0) | 2023.04.07 |
[프로그래머스 - JAVA] 모의고사 (0) | 2023.04.07 |
[프로그래머스 - JAVA] 폰켓몬 (0) | 2023.04.06 |
[프로그래머스 - JAVA] 2016년 (0) | 2023.04.06 |
댓글