백준 1205 등수 구하기(구현)

choiyongheon·2021년 8월 6일
1

이 문제에서는 주어진 배열 크기 n와 랭킹 컷의 크기인 p가 같으면서, 랭킹 리스트의 가장 작은 순위보다 새로운 스코어가 작다면 랭킹에 들어갈 수 없다. 이것을 나타낸 코드는 아래와 같다.

if(n == p && new_score <= arr[arr.length-1]) { System.out.print(-1); }

나머지는 새로운 점수인 new_score가 랭킹리스트에서 몇등인지만 출력하면 되기때문에 간단해진다.
랭킹 리스트에 들지 못하는 경우를 우선적으로 처리하는 것이 핵심이다.

import java.util.*;

public class Main {
    public static void main (String[]args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int new_score = scanner.nextInt();
        int p = scanner.nextInt();  //랭킹 리스트에 오를 수 있는 갯수.

        Integer[] arr = new Integer[n];
        for(int i=0; i<n; i++){
            arr[i] = scanner.nextInt();
        }
        Arrays.sort(arr, Collections.reverseOrder());

        if(n == p && new_score <= arr[arr.length-1])
            System.out.print(-1);
        else{
            int rank = 1;
            for(int i=0; i<arr.length; i++){
                if(new_score < arr[i])
                    rank++;
                else
                    break;
            }
            System.out.print(rank);
        }
    }
}

profile
주니어 백엔드 개발자

0개의 댓글

관련 채용 정보