[문제]
태수가 즐겨하는 디제이맥스 게임은 각각의 노래마다 랭킹 리스트가 있다. 이것은 매번 게임할 때 마다 얻는 점수가 비오름차순으로 저장되어 있는 것이다.
이 랭킹 리스트의 등수는 보통 위에서부터 몇 번째 있는 점수인지로 결정한다. 하지만, 같은 점수가 있을 때는 그러한 점수의 등수 중에 가장 작은 등수가 된다.
예를 들어 랭킹 리스트가 100, 90, 90, 80일 때 각각의 등수는 1, 2, 2, 4등이 된다
랭킹 리스트에 올라 갈 수 있는 점수의 개수 P가 주어진다. 그리고 리스트에 있는 점수 N개가 비오름차순으로 주어지고, 태수의 새로운 점수가 주어진다. 이때, 태수의 새로운 점수가 랭킹 리스트에서 몇 등 하는지 구하는 프로그램을 작성하시오. 만약 점수가 랭킹 리스트에 올라갈 수 없을 정도로 낮다면 -1을 출력한다.
만약, 랭킹 리스트가 꽉 차있을 때, 새 점수가 이전 점수보다 더 좋을 때만 점수가 바뀐다.
[코드]
import java.util.*;
public class BaekJoon_1205 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int teasu=sc.nextInt();
int p=sc.nextInt();
Integer[] score=new Integer[n];
for(int i=0;i<n;i++)
score[i]=sc.nextInt();
// 내림차순 정렬
Arrays.sort(score, Collections.reverseOrder());
// 랭킹에 들지 못하는 경우
if(n>=p&&score[n-1]>=teasu)
System.out.println(-1);
else {
int rank=1;
for(int i=0;i<n;i++) {
// 태수의 점수보다 점수가 높은 경우에만 랭크 증가
if(teasu<score[i])
rank++;
// 태수와 점수가 같거나 낮은 경우에는 랭크 증가 종료
else
break;
}
System.out.println(rank);
}
}
}
[고찰]
이번 문제는 내림차순 정렬 후 태수의 점수보다 점수가 높은 경우에만 랭크를 증가하면서 태수의 랭크를 구하면 되는 문제였다. 단, 그 전에 랭킹에 들지 못하는 경우를 먼저 처리해주어야 했다. 이 부분만 체크한다면 쉽게 해결할 수 있는 문제였다.
'백준' 카테고리의 다른 글
[백준_19941번] 햄버거 분배 (0) | 2023.03.28 |
---|---|
[백준_20920] 영단어 암기는 괴로워 (0) | 2023.03.28 |
[백준_20125번] 쿠키의 신체 측정 (0) | 2023.03.26 |
[백준_25757] 임스와 함께하는 미니게임 (0) | 2023.03.24 |
[백준_4659] 비밀번호 발음하기 (0) | 2023.03.24 |