문제
2022 연세대학교 미래캠퍼스 슬기로운 코딩생활에 N 명의 학생들이 응시했다.
이들 중 점수가 가장 높은 k 명은 상을 받을 것이다. 이 때, 상을 받는 커트라인이 몇 점인지 구하라.
커트라인이란 상을 받는 사람들 중 점수가 가장 가장 낮은 사람의 점수를 말한다.
입력
첫째 줄에는 응시자의 수 N 과 상을 받는 사람의 수 k 가 공백을 사이에 두고 주어진다.
둘째 줄에는 각 학생의 점수 x 가 공백을 사이에 두고 주어진다.
출력
상을 받는 커트라인을 출력하라.
<작성답안>
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int N = s.nextInt();
int k = s.nextInt();
int[] arr = new int[N];
int tmp = 0;
for (int a = 0; a < N; a++) {
arr[a] = s.nextInt();
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (arr[i] < arr[j]) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
System.out.println(arr[(N-1)-(k-1)]);
}
}
-> 맞추긴 했는데.. 찝찝하다.
설계할 때는 내림차순으로 설계해서 배열의 앞자리에서부터 순위를 매겨 커트라인을 끊고 싶었다.
지금 컴파일한 코드는 오름차순으로 되어 배열의 맨뒤가 가장 큰수, 맨 뒤를 기준으로 순위를 매기게끔 되었다.
<정답>
import java.util.*;
자.. 내림차순 메서드만 쓰면 게임이 끝난다...ㅋㅋㅋㅋㅋㅋ 위의 고민은 크게 쓸모가 없다 사실상.
정답 출처:
'📟java > 백준' 카테고리의 다른 글
백준 1427 자바 (0) | 2022.11.21 |
---|---|
백준 10989 자바 (0) | 2022.11.18 |
백준 2750 자바 (0) | 2022.11.17 |
백준 2563 자바 (1) | 2022.11.17 |
백준 2738 자바 (0) | 2022.11.16 |