더 많이 실패하기

백준 25305번 커트라인 자바 / 백준 단계별로 풀어보기 9단계 / 9. 정렬 본문

알고리즘/백준

백준 25305번 커트라인 자바 / 백준 단계별로 풀어보기 9단계 / 9. 정렬

김발자~ 2022. 9. 24. 22:54
반응형

백준 9단계 4번 문제 - 25305 커트라인

https://www.acmicpc.net/problem/25305

 

25305번: 커트라인

시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다.

www.acmicpc.net

 

 

 


9. 정렬 (4) 백준 25305번 문제 커트라인


문제


 

 

 

 


과정 생각해보기


 

1. n과 k를 입력받는다
2. 둘째줄에 배열로 x값들을 받는다
3. arrays.sort()를 이용해 순서대로 정렬을 배열한다 (카운팅 정렬 등 오름차순으로 정렬하는 방법은 무엇이든지)
4. n-k 인덱스값을 출력하면 이것이 커트라인

 

혹은

 

1. n과 k를 입력받는다
2. 둘째줄에 배열로 x값들을 받는다
3. 내림차순으로 정렬한다
4. k-1 인덱스값을 출력하면 이것이 커트라인

 

 


정답 인정 코드


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Arrays;
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int k = sc.nextInt();
        int x[] = new int[n];
        
        for(int i = 0; i < n; i++) {
            x[i] = sc.nextInt();
        }
        
        Arrays.sort(x);
        
        System.out.println(x[n-k]);
    }
}
cs

 

위에 과정생각해보기에 적은 그대로 코드를 구현하면 된다

까다로운 부분이 없어서 쉽게 할 수 있었다

 

 

 


직후 백지 복습


 

https://yeoncoding.tistory.com/516

카운팅 정렬 역순 정렬하다가 막혀서 이 블로그를 참고했다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int k = sc.nextInt();
        int x[] = new int[n];
        int count[] = new int[10001];
        
        for(int i = 0; i < n; i++) {
            x[i] = sc.nextInt();
        }
        
        for(int i = 0; i < n; i++) {
            count[x[i]]++;
        }
        
        for(int i = 10000; i >= 0; i--) {
            while(count[i] > 0) {
                count[i]--;
                k--; //역순 정렬에서는 뒤에서 k번째가 k번째로 큰 수이기 때문
                
                if(k==0) {
                    System.out.println(i);
                    break;
                }
            }
        }
    }
}
cs

 

 

 


재밌다

확실히 예제나 그림그리기를 이용하면 이해하기 쉬운 것 같다

반응형
Comments