티스토리 뷰

문제 풀러 가기 ✍🏻


 

문제

2022 연세대학교 미래캠퍼스 슬기로운 코딩생활에 N명의 학생들이 응시했다.

이들 중 점수가 가장 높은 k명은 상을 받을 것이다. 이 때, 상을 받는 커트라인이 몇 점인지 구하라.

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

 

입력

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

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

출력

상을 받는 커트라인을 출력하라.

 

제한

  • 1 <= N <= 1000
  • 1 <= k <= N
  • 0 <=x <= 10000

풀이(Solution)

 

1. 입력과 출력은 각각 BufferedReader와 BufferedWriter으로 처리했다.(예외 처리, try-catch)

 

2. 입력 받은 수들을 int[] 배열에 저장했다.

 

3.  'Arrays.sort(배열)'메서드를 호출하여 커트라인 계산을 위한 오름차순 정렬을 했다.

 

4. 'Arrays.sort(배열)'메서드를 호출하기 위해 java.util.Arrays를 import해야 한다.

 

시행착오(Trial&Error)

518899502, 518899594, 51899612 - 런타임 에러(NoSuchElement)

참조변수 st2 대신 st로 잘못 작성하여 에러가 밸생했다.

코드

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

class Main {
    public static void main(String[] args) {
        try {
            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 arr[] = new int[N];
            
            StringTokenizer st2 = new StringTokenizer(br.readLine(), " ");
            br.close();
            for(int i = 0; i < N; i++) {
                arr[i] = Integer.parseInt(st2.nextToken());
            }
            Arrays.sort(arr);
            bw.write(arr[arr.length - k] + "\n");
            bw.close();
        } catch(IOException e) {}
        
    }
}

참고

댓글
공지사항