https://www.acmicpc.net/problem/15651
<문제 요약>
주어진 1~N에서 3개로 이뤄진 수열을 출력하는 문제
(단 사전순으로, 같은 숫자 반복 가능)
<문제 풀이>
package baekjoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.nio.Buffer;
import java.util.StringTokenizer;
public class P15651 {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(br.readLine());
N=Integer.parseInt(st.nextToken());
M=Integer.parseInt(st.nextToken());
arr=new int[M];
dfs(0);
System.out.println(sb);
}
static int N;
static int M;
static int[] arr;
static StringBuilder sb=new StringBuilder();
static void dfs(int depth){
if(depth==M){
for(int val:arr) sb.append(val).append(" ");
sb.append("\n");
return;
}
for(int i=0;i<N;i++){
arr[depth]=i+1;
dfs(depth+1);
}
}
}
백트래킹중 dfs문제이다!
학부 때 알고리즘 강의 시간에 공부한 dfs ..
이렇게 문제로 풀어보니 색 달랐다
백준 백트레킹 카테고리에 N과 M 문제 시리즈가 있는데 이게 젤 쉬운 것 같다
알고리즘 단골 유형이기도 하니 열심히 익혀보쟈 !