글 작성자: 취업중인 피터팬
728x90

 

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

 

25305번: 커트라인

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

www.acmicpc.net

 

문제 설명

 

간단하게 수를 정렬하여 두번째 입력값 번째의 수를 찾아내는 문제입니다.

 

 

문제 풀이

해당 문제는 버블 정렬을 사용해서 풀도록 하겠습니다.

삽입 정렬에 대한 내용은 버블 정렬을 참고해주세요.

정렬에 대한 이해가 있다면 어렵지 않은 문제일 것입니다.

import java.util.Scanner;

public class Number_25305 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int k = sc.nextInt();

        int[] array = new int[n];

        for(int i=0; i<array.length; i++){
            array[i] = sc.nextInt();
        }

        //선택 정렬
        bubble_sort(array);

        System.out.println(array[k-1]);

    }

    public static void bubble_sort(int[] array){
        /*
         * 시작을 i로 1기준을 잡는다.
         * i는 저장한 원소를 비교하지 않게 하는 역할을 한다.
         */
        for(int i=1; i<array.length; i++){
            boolean flag = false;//교환이 이루어진지 확인하는 변수
            //저장한 원소를 제외하고 첫 원소부터 차례대로 비교한다.
            for(int j=0; j<array.length-i; j++){
                //비교한 후 교환
                if(array[j] < array[j+1]){
                    swap(array,j,j+1);
                    flag = true;//교환이 아루어짐
                }
            }

            //교환이 이루어지지 않았다면 반복 종료
            if(flag == false){
                break;
            }
        }
    }

    public static void swap(int[] array, int i, int min){
        int temp = array[i];
        array[i] = array[min];
        array[min] = temp;
    }
}

조심해야 할 것은 내림차순이 아닌 오름차순으로 정려한 후에 문제를 풀어야 한다는 것입니다.