[백준] 25305번 커트라인 - Java

screenshot


🖊️풀이법

이번 문제 또한 버블소팅 방식으로 풀었다. 알고리즘 문제를 풀며 최대한.. 라이브러리 사용을 지양하고, 직접 기능을 구현해서 해보고자 한다..!

import java.io.*;
import java.util.*;

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 = Integer.parseInt(st.nextToken()); //점수의 총량을 N에 담는다.
        int[] scores = new int[N]; //N크기의 배열을 만들어준다.
        int x = Integer.parseInt(st.nextToken()); //상을 받는 인원(커트라인)을 x에 할당
        st = new StringTokenizer(br.readLine());
        for(int i =0; i<N; i++){
            scores[i] = Integer.parseInt(st.nextToken()); // 각각의 scores배열 요소에 점수를 할당
        }
        for(int i = 0; i<N-1; i++){
            for(int j = 0; j<N-i-1; j++){
                if(scores[j] < scores[j+1]) //BubbleSort를 이용해서 내림차순 정렬을 해준다.
                    swap(scores,j,j+1);
            }
        }
        System.out.println(scores[x-1]); //정렬된 scores배열에서 x번째 수(커트라인)을 출력한다. 
    }                                    //배열의 index는 0부터 시작하므로 x-1로 지정
    public static void swap(int[] arr, int i, int j){
        int tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }
}

느낀점

아직까지 정렬에 대한 이해는 BubbleSorting밖에 개념이 없다. 여러가지의 정렬법이 있는 것으로 아는데, 정렬 개념들을 좀 더 학습하고 효율적인 정렬을 사용할 수 있도록 노력해야겠다.