코딩 테스트/알고리즘
[백준] 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);
}
}