728x90
난이도 : 실버3
풀이일 : 240229
https://www.acmicpc.net/problem/15656
링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐
풀이 코드
import java.util.Scanner;
import java.util.Arrays;
public class Main {
static int N, M;
static int[] nums;
static int[] result;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 초기 설정
N = sc.nextInt();
M = sc.nextInt();
nums = new int[N];
result = new int[M];
// 입력받기
for (int i = 0; i < N; i++) {
nums[i] = sc.nextInt();
}
// 배열 정렬
Arrays.sort(nums);
DFS(0);
System.out.println(sb);
};
static void DFS(int depth) {
// 깊이가 M인 경우, 현재 result 요소들을 sb에 추가
if (depth == M) {
for (int i : result) {
sb.append(i+" ");
}
sb.append('\n');
return;
}
// 그렇지 않으면 재귀호출로 다음 숫자 추가
for (int i = 0; i < N; i++) {
result[depth] = nums[i];
DFS(depth+1);
}
}
}
- Arrays.sort() : 수열을 사전 순서로 출력하기 위한 정렬 과정
- 중복된 숫자를 출력해야 하기 때문에 visited 배열 미생성
- 현재 깊이가 M과 같으면, result 요소들 sb에 추가, 아니라면 재귀호출
느낀점
- 2월 1일에 마지막으로 자바 문제를 풀고 처음 풀어서 하는 기록
- N과 M 시리즈를 여행 중 다 풀고 올 것 같았는데 그러지 못했다. 그래도 많이 풀었어서 그런지 기억이 나서 쉽게 풀었다. Arrays.sort 같은건 조금 버벅였지만
'알고리즘 > 🥈 실버' 카테고리의 다른 글
백준 15663 N과 M (9) 자바 풀이 (0) | 2024.03.03 |
---|---|
백준 15657 N과 M (8) 자바 풀이 (0) | 2024.03.02 |
백준 15655 N과 M (6) 자바 풀이 (1) | 2024.02.01 |
백준 15654 N과 M (5) 자바 풀이 (1) | 2024.01.31 |
백준 15652 N과 M (4) 자바 풀이 (0) | 2024.01.27 |