[백준] 1205번 등수 구하기 (Java)

subbni·2025년 6월 27일

백준

목록 보기
23/24
post-thumbnail

1205번 문제

문제

풀이

문제 자체는 단순하지만 같은 점수가 있을 때, 점수의 등수 중 가장 작은 등수가 된다는 문제의 조건을 잘 구현해야 한다.

내 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int newScore = Integer.parseInt(st.nextToken());
        int P = Integer.parseInt(st.nextToken());

        if(N == 0) {
            System.out.println(1);
            return;
        }

        st = new StringTokenizer(br.readLine());

        int answer = -1;
        int prevScore = Integer.MAX_VALUE;
        int remainingCnt = P;
        int rank = 0;
        for (int i=0; i<=N; i++) {
            if (remainingCnt <= 0) break;
            if (i == N) { 
                answer = prevScore == newScore ? rank : i+1;
                break;
            }

            int curScore = Integer.parseInt(st.nextToken());
            if (curScore < newScore) {
                answer = prevScore == newScore ? rank : i+1;
                break;
            }

            if (prevScore > curScore) { // 순위 갱신
                rank = i+1;
            }

            prevScore = curScore;
            remainingCnt--;
        }

        System.out.println(answer);
    }
}

P개 안에 들지 못 하면 -1를 출력해야 한다.

  • remainingCnt를 통해 체크한다.

같은 점수가 있을 때, 점수의 등수 중 가장 작은 등수가 된다.

  • 이 말은 만일 같은 점수가 3개 (ex. a a a) 있을 때, 새로운 점수가 가장 뒤로 추가된다는 말이다. (ex. a a a @ 에서 @의 위치에 들어감)
  • 따라서 새로운 점수가 앞에 놓여야 하는 경우?만을 찾아서 answer의 값을 구했다.
  • 경우 1. newScore보다 curScore가 작은 경우, newScore가 앞에 놓인다.
  • 경우 2. 리스트의 가장 마지막에 놓여야 하는 경우 (i==N인 경우)
profile
개발콩나물

0개의 댓글