백준 15655번: N과 M (6) :: 매운코딩
728x90
300x250

임의의 숫자를 제공하여 조합하는 문제

import java.util.*; 

public class Main { 

public static int N,M; 
public static int[] arr; 
public static int[] ans; 
public static boolean[] visit; 
public static StringBuilder sb = new StringBuilder(); 
public static void main(String[] args) { 

Scanner sc = new Scanner(System.in); 

N = sc.nextInt(); 
M = sc.nextInt(); 
arr = new int[N]; 
ans = new int[M]; 
visit = new boolean[N]; 

for (int i = 0; i < N; i++) { 
arr[i]=sc.nextInt(); 
} 

Arrays.sort(arr); 

dfs(0,0); 
System.out.println(sb); 

} 

public static void dfs(int num, int idx) { 
//종료조건 
//뽑을 갯수만큼 뽑았는가? 
if(idx == M) { 
for (int i = 0; i < M; i++) { 
sb.append(ans[i]+" "); 
} 
sb.append("\n"); 
return; 
} 

//탐색 
for (int i = num; i < N; i++) { 
int n = arr[i]; 

//이미 들렸던 곳인가? 
if(visit[i]) 
continue; 

visit[i] = true; 
ans[idx] = n; 
dfs(i,idx+1); 
visit[i] = false; 

} 
} 

} 
728x90

'알고리즘 > 조합 & 순열' 카테고리의 다른 글

백준 14889번: 스타트와 링크  (0) 2020.03.21
백준 14888번: 연산자 끼워넣기  (0) 2020.03.10
백준 15654번: N과 M (5)  (0) 2020.03.04
백준 15652번: N과 M (4)  (0) 2020.03.04
백준 15651번: N과 M (3)  (0) 2020.03.03

+ Recent posts