📟java/백준

백준 25305 자바

하얀성 2022. 11. 18. 12:36

문제

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.*;

public class back25305 {
    public static void main(String args[]){
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int k=scanner.nextInt();
        Integer arr[]=new Integer[n];
        for(int i=0;i<n;i++){
            arr[i]=scanner.nextInt();
        }
        Arrays.sort(arr,Collections.reverseOrder());
        System.out.println(arr[k-1]);
    }
}

 

자.. 내림차순 메서드만 쓰면 게임이 끝난다...ㅋㅋㅋㅋㅋㅋ 위의 고민은 크게 쓸모가 없다 사실상.

 

정답 출처:

https://binsblog.tistory.com/entry/%EB%B0%B1%EC%A4%80-25305-%EC%BB%A4%ED%8A%B8%EB%9D%BC%EC%9D%B8-Java

'📟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