문제 : www.acmicpc.net/problem/10974
10974번: 모든 순열
N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
www.acmicpc.net
문제 유형 : 순열(넥퍼연습하려고 품)
풀이방식 : 넥퍼
소스코드
package BOJ;
import java.util.Scanner;
public class BOJ_10974_모든순열_Main {
private static int N;
private static int[] arr;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = i+1;
}
do {
for (int i = 0; i < N; i++) {
if(i==N-1) System.out.println(arr[i]);
else System.out.print(arr[i]+" ");
}
}while(next_permutaion());
}
private static boolean next_permutaion() {
int i = N-1;
while(i>0&&arr[i-1]>=arr[i]) --i;
if(i==0) return false;
int j = N-1;
while(arr[i-1]>=arr[j]) --j;
swap(i-1, j);
j = N-1;
while(i<j) swap(i++,j--);
return true;
}
private static void swap(int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[JAVA]백준_13335_트럭 (0) | 2021.01.20 |
---|---|
[JAVA]백준_10819_차이를최대로 (0) | 2021.01.19 |
[JAVA]백준_10597_순열장난 (0) | 2021.01.18 |
[JAVA]백준_6087_레이저통신 (0) | 2020.09.23 |
[JAVA]백준_19637_IF문좀대신써줘 (0) | 2020.09.22 |