[1,1] 허용X & [1,2] [2,1] 다른것으로 봄 ->중복X 순열
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static int M;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws NumberFormatException, IOException {
//구할것: 1부터 N까지 자연수 중 중복없이 M개 고른 수열
//입력 N(1부터 N까지) M(M개를 뽑는)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
int [] arr = new int[N];
for (int i = 1; i <= arr.length; i++) {
arr[i-1]= i;
}
permutation(arr, new int[M],new boolean[arr.length],0);
System.out.println(sb);
}
private static void permutation(int[] arr, int[] sel, boolean[] v, int k) {
if(k==M) {
for (int i = 0; i < sel.length; i++) {
sb.append(sel[i]).append(' ');
}sb.append('\n');
return;
}
for (int i = 0; i < arr.length; i++) {
if(!v[i]) {
v[i]=true;
sel[k]=arr[i];
permutation(arr, sel, v, k+1);
v[i]=false;
}
}
}
}
1. StringBuilder사용
2. Print 사용
시간을 줄이기 위해 가능하면 꼭 StringBuilder를 사용하자!
'Problem Solving > BOJ' 카테고리의 다른 글
백준 - 8320 직사각형을 만드는 방법 (0) | 2021.02.07 |
---|---|
백준- 15652번 N과M (4) (0) | 2021.02.07 |
백준- 15651번 N과M (3) (0) | 2021.02.07 |
백준 -15650번 N과M(2) (0) | 2021.02.07 |
백준 -1244 스위치 켜고 끄기 (0) | 2021.02.06 |
댓글