728x90
20921번: 그렇고 그런 사이
정수 $N$, $K$가 주어진다. ($2 \leq N \leq 4\,242$, $0 \leq K \leq \frac{N(N-1)}{2}$)
www.acmicpc.net
풀이
스왑해서 정렬해준다고 생각하면 될 것 같다.
대신 왼쪽 배열 값이 더 큰 경우 정지!
package 백준renew;
import java.io.*;
import java.util.*;
public class 실버1_20921_그렇고그런사이 {
static int N, K;
static int arr[];
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
arr = new int[N];
for(int i=1; i<=N; i++) {
arr[i-1] = i;
}
Swap(0, N-1, N-1);
for(int i=0; i<N; i++) {
sb.append(arr[i]).append(" ");
}
bw.write(sb.toString()); bw.close();
}
static void Swap(int cnt, int start, int dot) {
while(true) {
if(cnt == K) {
return;
}
if(start >= 1 && arr[start] > arr[start-1]) {
int now = arr[start];
arr[start] = arr[start-1];
arr[start-1] = now;
start--;
cnt++;
if(cnt == K) {
return;
}
}else {
start = dot;
continue;
}
}
}
}
728x90
'코딩테스트 > Algorithm' 카테고리의 다른 글
[BOJ] 2748: 피보나치 수 2 (0) | 2024.03.29 |
---|---|
[BOJ] 1021: 회전하는 큐 (JAVA) (0) | 2024.03.27 |
[BOJ] 1389: 케빈 베이컨의 6단계 법칙 (JAVA) (1) | 2024.03.24 |
[BOJ] 3273: 두 수의 합 (JAVA) (1) | 2024.03.23 |
[BOJ] 2003: 수들의 합 2 (1) | 2024.03.22 |