Next Permutation (NP)
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
static int[] array;
static int Number;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Number = Integer.parseInt(br.readLine());
String[] tmm = br.readLine().split(" ");
array = new int[Number];
for (int i = 0; i < Number; i++) {
array[i] = Integer.parseInt(tmm[i]);
}
next();
}
public static void next() {
int i = Number-1;
while( i>0 && array[i-1] > array[i]) {
i -= 1;
}
if (i==0) {
System.out.println("-1");
return;
}
int j = Number -1;
while ( array[j] < array[i-1]) {
j -= 1;
}
swap(array, i-1,j);
int k = Number-1;
while(i<k) {
swap(array, i,k);
k -= 1;
i += 1;
}
for(int x : array) {
System.out.print(x + " ");
}
return;
}
public static void swap(int[] arr, int a, int b) {
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
}
이전 순열
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class D10_이전순열 {
static int[] array;
static int Number;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Number = Integer.parseInt(br.readLine());
String[] tmm = br.readLine().split(" ");
array = new int[Number];
for (int i = 0; i < Number; i++) {
array[i] = Integer.parseInt(tmm[i]);
}
before();
}
public static void before() {
int i = Number-1;
while( i>0 && array[i-1] < array[i]) {
i -= 1;
}
if (i==0) {
System.out.println("-1");
return;
}
int j = Number -1;
while ( array[j] > array[i-1]) {
j -= 1;
}
swap(array, i-1,j);
int k = Number-1;
while(i<k) {
swap(array, i,k);
k -= 1;
i += 1;
}
for(int x : array) {
System.out.print(x + " ");
}
return;
}
public static void swap(int[] arr, int a, int b) {
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
}