명은 상을 받을 것이다.
명의 학생들이 응시했다. 이들 중 점수가 가장 높은이 때, 상을 받는 커트라인이 몇 점인지 구하라.
커트라인이란 상을 받는 사람들 중 점수가 가장 가장 낮은 사람의 점수를 말한다.
입력
첫째 줄에는 응시자의 수 과 상을 받는 사람의 수 가 공백을 사이에 두고 주어진다.
둘째 줄에는 각 학생의 점수 가 공백을 사이에 두고 주어진다.
시험 응시자들 가운데 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]);
}
}
최최최최종...
'코딩테스트 > ⚪백준_ 단계별로 풀어보기' 카테고리의 다른 글
[정렬] 통계학 (0) | 2023.03.03 |
---|---|
[정렬] 수 정렬하기 3 (0) | 2023.03.03 |
백준 _단계별로 풀어보기<입출력과 사칙연산3> (0) | 2022.05.21 |
백준_단계별로 풀어보기 <입출력과 사칙연산2> (0) | 2022.05.20 |
백준 _단계별로 풀어보기_<입출력과 사칙연산> (0) | 2022.05.18 |