풀이
- 두 가지 해결 방법은 딱 2~3줄 차이로
- StringBuilder로 결과를 String 타입으로 저장하는 건데
- 나는 기존엔 첫 번째 해결 방법으로 join으로 배열을 공백없이 출력하도록 했는데
- 이유는 계속 변수 + " " 이렇게 하면 마지막 인덱스의 값 다음에
- 공백이 추가되니까 문제가 될 거 같아 join으로 했는데
- 두 번째 방법처럼 StringBuilder에 추가 후 sb.toString() 을 해도 아무런 문제가 없어서.
- 앞으로도 이렇게 하면 될 듯하다 ㅋㅋ
// 첫 번째 해결 방법
import java.io.*;
import java.util.*;
import java.util.stream.*;
public class _15649 {
static Deque<Integer> result;
static boolean[] visit;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] NM = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int N = NM[0];
int M = NM[1];
result = new ArrayDeque<>();
visit = new boolean[N + 1];
int[] num_li = IntStream.rangeClosed(1, N).toArray();
back(M, num_li);
System.out.println(sb.toString());
}
public static void back(int M, int[] num_li) {
if (result.size() == M) {
for (int num: result) sb.append(num).append(" ");
sb.append("\n");
return;
}
for (int num : num_li) {
if (!visit[num]) {
result.add(num);
visit[num] = true;
back(M, num_li);
result.pollLast();
visit[num] = false;
}
}
}
}
// 두 번째 해결 방법
import java.io.*;
import java.util.*;
import java.util.stream.*;
public class Main {
static Deque<Integer> result;
static boolean[] visit;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] NM = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int N = NM[0];
int M = NM[1];
result = new ArrayDeque<>();
visit = new boolean[N+1];
int[] num_li = IntStream.rangeClosed(1,N).toArray();
back(M,num_li);
}
public static void back(int M, int[] num_li) {
if (result.size() == M) {
System.out.println(result.stream().map(String::valueOf).collect(Collectors.joining(" ")));
return ;
}
for (int num: num_li) {
if (!visit[num]) {
result.add(num);
visit[num] = true;
back(M,num_li);
result.pollLast();
visit[num] = false;
}
}
}
}
'알고리즘' 카테고리의 다른 글
[백준, 자바, 1926번] 그림 (0) | 2024.09.06 |
---|---|
[백준, 자바, 2606번] 바이러스 (0) | 2024.09.06 |
[프로그래머스, 자바, 1260번] DFS와 BFS (0) | 2024.09.05 |
[프로그래머스, 자바, 84512번] 모음 사전 (0) | 2024.09.04 |
[프로그래머스, 자바, 12911번] 다음 큰 숫자 (0) | 2024.09.04 |