[JAVA] 커트라인

NoHae·2025년 2월 8일

백준

목록 보기
2/106

문제 출처

단계별로 풀어보기 > 정렬 > 커트라인
https://www.acmicpc.net/problem/25305

문제 설명

응시자 수 N, 상 받는 사람 수 k 일 때, 상 받을 수 있는 커트라인을 출력하라.

커트라인은 k번째 사람의 점수이다.

접근 방법

배열 score를 오름차순 정렬하고, score[N-k] 번째가 커트라인 k번째이다.
N-k 번째 인 이유는, score는 오름차순 정렬이 되어있으므로, 가장 뒤에있는 점수가 가장 큰 점수이다.
가장 큰 점수인 N 그 중 k번째 사람은 N-k번째이다.
% 배열을 기준으로 (N-1) - (k - 1) = N-k

import java.io.*;
import java.nio.Buffer;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(bf.readLine());

        int N = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());

        int[] score = new int[N];
        st = new StringTokenizer(bf.readLine());

        for(int i = 0; i<N; i++){
            score[i] = Integer.parseInt(st.nextToken());
        }
        bf.close();

        Arrays.sort(score);

        bw.write(String.valueOf(score[N-k]));
        bw.flush();
        bw.close();

    }
}

Review

import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

public class BOJ_25305_커트라인_review {
    public static void main(String[] args)  throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());

        int[] scores = new int[N];
        st = new StringTokenizer(br.readLine());

        for(int i = 0; i<N; i++){
            scores[i] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(scores);

        bw.write(String.valueOf(scores[N-k]));
        br.close();
        bw.flush();
        bw.close();
    }
}

알게된 점

Array는 기본적으로 오름차순 배열 정렬만 된다.
만약 Arrays.sort(배열, Collections.reverseOrder())를 진행하여 내림차순 정렬하고 싶다면, score를 int가 아닌 객체타입인 Integer로 생성하면 된다.

Integer[] score = new Integer[N];

문제푼 흔적


Review

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글