728x90
난이도 : 실버3
풀이일 : 2401243
https://www.acmicpc.net/problem/15651
링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐
풀이 코드
import java.util.Scanner;
public class Main {
static int N, M;
static int[] array;
// 시간초과 방지를 위한 출력 방식
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
array = new int[M];
DFS(0);
System.out.print(sb);
}
// 중복 여부를 고려하지 않고, 배열에 수 추가
static void DFS(int depth) {
if (depth == M) {
for (int i : array) {
sb.append(i + " ");
}
sb.append('\n');
return;
}
for (int i = 0; i < N; i++) {
array[depth] = i + 1;
DFS(depth + 1);
}
}
}
- StringBuilder : System.out.println()으로 매번 출력하니 시간초과가 나와서 출력 방식을 변경
- 중복된 숫자 출력이 가능하기 때문에, visited 배열을 만들지 않고, 숫자들을 담아 출력
느낀점
- 여행 첫 날이라 시간이 급해 날로 먹으려고 했는데 실패했다. 다른 출력 방법도 공부해서 따로 포스팅을 해봐야지
'알고리즘 > 🥈 실버' 카테고리의 다른 글
백준 15654 N과 M (5) 자바 풀이 (1) | 2024.01.31 |
---|---|
백준 15652 N과 M (4) 자바 풀이 (0) | 2024.01.27 |
백준 15650 N과 M (2) 자바 풀이 (1) | 2024.01.23 |
백준 15649 N과 M(1) 자바 풀이 (1) | 2024.01.23 |
백준 16953 A -> B 자바 풀이 (0) | 2024.01.21 |