티스토리 뷰
문제
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) {}
}
}
참고
'알고리즘 > 문제풀이 - 백준' 카테고리의 다른 글
| [백준 2750번] 수 정렬하기(JAVA) (1) | 2022.11.18 |
|---|---|
| [백준 1361번] 그룹 단어 체커(JAVA) (2) | 2022.11.17 |
| [백준 2941번] 크로아티아 알파벳(JAVA) (0) | 2022.11.16 |
| [백준 5622번] 다이얼(JAVA) (0) | 2022.11.15 |
| [백준 2908번] 상수(JAVA) (0) | 2022.11.14 |
댓글
공지사항
