μ΅œλŒ€ 1 λΆ„ μ†Œμš”

πŸ“ [S3_15654] Nκ³ΌM(5)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
	static StringTokenizer st;
	static StringBuilder sb;
	static int N,M;
	static int[] arr;
	static boolean[] v;
	static int[] res;
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		sb = new StringBuilder();
		
		st = new StringTokenizer(br.readLine(), " ");
		
		N = Integer.parseInt(st.nextToken());
		
		M = Integer.parseInt(st.nextToken());
		
		arr = new int[N];
		res=  new int[M];
		v = new boolean[N];
		
		
		st = new StringTokenizer(br.readLine(), " ");
		for(int i=0; i<N; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}
		
		Arrays.sort(arr);
		
		perm(0);
		System.out.println(sb);
	}
	
	static void perm(int idx) {
		if(idx == M) {
			for(int i=0; i<M; i++) {
				sb.append(res[i]).append(" ");
			}
			sb.append("\n");
			return;
		}
		
		for(int i=0; i<N; i++) {
			if(v[i]) {
				continue;
			}
			else {
				v[i] =true;
				res[idx] = arr[i];
				perm(idx+1);
				v[i] = false;
			}
		}
	}
}

πŸ€” λ‚˜μ˜ 생각

이 λ¬Έμ œλŠ” μˆœμ„œκ°€ 상관 μžˆλŠ” 배열을 λ½‘λŠ” λ¬Έμ œμ΄λ‹€. nPr , μˆœμ—΄λ¬Έμ œμ΄λ‹€.
λ‚˜μ—΄ν•˜λŠ” 값이 1,2,3,4 순이 μ•„λ‹Œ 직접 μž…λ ₯ν•΄μ„œ κ·Έ 값듀을 좜λ ₯ν•΄μ€€λ‹€.
κ·Έλž˜μ„œ κ²°κ³Όλ₯Ό 좜λ ₯ν•˜λŠ” 배열에 arr 일λ ₯받은 값듀을 λ„£μ–΄μ€€λ‹€.
μˆœμ—΄μ— λŒ€ν•œ μžμ„Έν•œ μ„€λͺ…은 여기에 μžˆλ‹€.