https://school.programmers.co.kr/learn/courses/30/lessons/138477
Level 1, 정답률 38%의 신규 문제입니다.
문제 자체는 쉬우나, 완료자가 많이 없어서 아직은 정답률이 낮아보입니다.
문제 분석
문제에서 주어진 예시입니다.
저희가 구해야 하는 것들은 모든 일차 별 발표 점수를 구해야합니다.
먼저 명예의 전당에 오를 수 있는 값들의 개수는 k개입니다. 여기에 오를 수 있는 점수는 모든 점수 중 상위 k개입니다.
발표 점수 계산은 명예의 전당에 올라가있는 k개의 값들 중 가장 낮은 값으로 선정됩니다.
어떻게 접근하고 풀이할지
문제 풀이를 위해서 우리는 두 가지를 해야 합니다.
1. 명예의 전당에 score[i] 추가하기
2. 내림차순 정렬 후 상위 k개만큼 값 저장하기
3. 명예의 전당에서 가장 낮은 값을 가진 변수를 answer(발표 점수)에 추가해주기
이렇게 구현하기 위해 List로 빡구현 하는 방법과, PriorityQueue로 구현하는 방법을 생각했습니다.
하지만 더 간단하게 풀기 위해서 Stream을 적용해서 풀어봤습니다.
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
static public List<Integer> solution(int k, int[] score) {
List<Integer> answer = new ArrayList<>();
List<Integer> scoreList = new ArrayList<>();
for (int i = 0; i < score.length; i++) {
scoreList.add(score[i]);
scoreList = scoreList.stream()
.sorted(Comparator.reverseOrder()) // 내림차순
.limit(k) // 상위 k개 추출
.collect(Collectors.toList());
answer.add(scoreList.get(scoreList.size() - 1));
}
return answer;
}
}
'PS' 카테고리의 다른 글
[자바] 백준 1328 : 고층 빌딩 (DP 풀이) 접근 방법 및 풀이 (1) | 2022.12.27 |
---|---|
[자바] 프로그래머스 : 여행경로 (DFS 백트래킹) / 접근 방법 및 풀이 (0) | 2022.12.21 |
[자바] 프로그래머스 - 실패율 (2019 카카오 블라인드) / HashMap 풀이 (0) | 2022.11.17 |
[자바] 프로그래머스 - 피로도 / 공포의 백트래킹 알고리즘 정복하기 (1) | 2022.11.14 |
[자바] 프로그래머스 - 주차 요금 계산 (2022 카카오 블라인드) / HashMap 풀이 (0) | 2022.11.10 |