Algorithm

[구현] 백준 1205 등수구하기 JAVA

EllaCoo 2024. 4. 27. 16:51
package com.test.realization;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;

public class R_8_1205 {
    // [구현] 백준 1205 등수구하기 JAVA
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] temp = br.readLine().split(" ");
        int N = Integer.parseInt(temp[0]); // 0~P
        int P = Integer.parseInt(temp[2]); // 10~50
        long newGrade = Long.parseLong(temp[1]);

        if (N < 1) {
            System.out.println(1);
            return;
        }
        temp = br.readLine().split(" ");
        Long[] originGrade = new Long[N+1];
        originGrade[0] = Long.MAX_VALUE;
        for (int i = 0 ; i < N ; i++) {
            originGrade[i+1] = Long.parseLong(temp[i]);
        }
        Arrays.sort(originGrade, Comparator.reverseOrder());
        int newRanking = -1;
        int sameRank = 0;
        for (int i = 1 ; i <= P ; i++) {
            if (N < P && i > N) {
                // 이미 origin 다 돌았고, 순위 남아도는 상태
                // -> newRanking한테 순위 주자!
                newRanking = sameRank > 0 ? sameRank : i;
                break;
            }
            if (newGrade > originGrade[i]) {
                newRanking = sameRank > 0 ? sameRank : i;
                break;
            } else if (newGrade == originGrade[i]) {
                sameRank = sameRank > 0 ? sameRank : i;
            }
        }
        System.out.println(newRanking);
    }
}