코딩테스트/⚪백준_ 단계별로 풀어보기

[정렬] 25305번 : 커트라인

1son 2023. 3. 2. 16:26

명의 학생들이 응시했다. 이들 중 점수가 가장 높은 명은 상을 받을 것이다.

이 때, 상을 받는 커트라인이 몇 점인지 구하라.

커트라인이란 상을 받는 사람들 중 점수가 가장 가장 낮은 사람의 점수를 말한다.

 

입력

첫째 줄에는 응시자의 수 상을 받는 사람의 수 가 공백을 사이에 두고 주어진다.

둘째 줄에는 각 학생의 점수 가 공백을 사이에 두고 주어진다.

 

 

시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다.

 

 

import java.util.*;
import java.io.*;

public class Main{
    public static void main(String args[]) throws IOException{
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N; //응시자의 수
        int K; //상을 받는 사람의 수
        N = Integer.parseInt(br.readLine());
        K = Integer.parseInt(br.readLine());
        int[] arr = new int[N] ;
        
        for(int i=0;i<N;i++){
            arr[i] = Integer.parseInt(br.readLine());
        }
        
        Arrays.sort(arr);
        int ans = arr[K-1];
        System.out.println(ans);
    }
}

내가 작성한 코드지만

이렇게 작성하면 에러가 난다. 

 

+ 다른 블로그들을 찾아보니 내가 잘못한 점이 보였다. 

sort는 오름차순이다. 

그러니 내가 찾는 값이 안나온다. 

 

+ 내가 입력한 코드는 입력이 한 줄씩 띄어서 받는 것이다 그러니 잘못됐다.

 

+ st를 중간에 또 새롭게 선언을 해줘야 한다. 

 

import java.util.*;
import java.io.*;

public 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; //응시자의 수
        int K; //상을 받는 사람의 수
        N = Integer.parseInt(st.nextToken());
        K = Integer.parseInt(st.nextToken());
        int[] arr = new int[N] ;
        
        st = new StringTokenizer(br.readLine());
        for(int i=0;i<N;i++){
            arr[i] = Integer.parseInt(st.nextToken());
        }
        
        Arrays.sort(arr);
        System.out.println(arr[arr.length-K]);
    }
}

최최최최종...