코딩 테스트/알고리즘

[백준] 23968 알고리즘 수업 - 버블 정렬 1(Bronze.1)

토자맨 2024. 7. 10. 15:37

문제

코드

https://tojaman.tistory.com/89
위 문제와 같은 유형의 문제이다.
두 숫자의 자리를 바꿀 때마다 카운팅을 한다.
k번째 위치 교환 시 두 숫자를 출력하면 된다.
의사 코드만 구현하면 간단하게 풀 수 있다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class _23968 {
    public static void main(String [] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st1 = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st1.nextToken());
        int k = Integer.parseInt(st1.nextToken());

        int[] a = new int[n];
        StringTokenizer st2 = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            a[i] = Integer.parseInt(st2.nextToken());
        }

        buble_sort(a, k);


    }

    public static void buble_sort(int[] a, int k) {
        int cnt = 0;
        for (int i = 0; i < a.length - 1; i++) {
            for (int j = 0; j < a.length -1 -i; j++) {
                if (a[j] > a[j+1]) {
                    int temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                    cnt++;
                    if (cnt == k)
                        System.out.println(a[j] + " " + a[j+1]);
                }
            }
        }
        if (cnt < k)
            System.out.println(-1);
    }
}