728x90
난이도 : 실버3
풀이일 : 2403026
https://www.acmicpc.net/problem/15657
링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐
풀이 코드
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, 0);
System.out.println(sb);
}
static void DFS(int depth, int now) {
// 깊이 M 일 때, 현재 요소 sb에 추가
if (depth == M) {
for (int i : result) {
sb.append(i+" ");
}
sb.append('\n');
return;
}
// 지금 숫자 이후 숫자부터 재귀호출
for (int i = now; i < N; i ++) {
result[depth] = nums[i];
DFS(depth + 1, i);
}
}
}
- 주어진 수들을 입력 받기
- 오름차순 출력을 위해 입력 받은 배열 정렬
- 깊이 0, 현재 자릿수 0으로 설정해 DFS 호출
- 함수 실행 시, 깊이가 M 이라면, 현재 result에 있는 요소들을 sb에 공백과 함께 추가, 모든 요소 추가 후 개행문자 추가
- 깊이가 M이 아니라면, 현재 자릿수 이후 자리부터 DFS 재귀호출
느낀점
- 감기 걸려서 아프니까 오늘은 풀던 N과 M 자바 문제 풀이
- 코드를 실행하면 자꾸 에러가 떠서 왜 그럴까 고민하다가 보니, return을 안넣어줘서 그런거였다. 꼼꼼하게 적자
'알고리즘 > 🥈 실버' 카테고리의 다른 글
백준 15664 N과 M (10) 자바 풀이 (0) | 2024.03.07 |
---|---|
백준 15663 N과 M (9) 자바 풀이 (0) | 2024.03.03 |
백준 15656 N과 M (7) 자바 풀이 (0) | 2024.02.29 |
백준 15655 N과 M (6) 자바 풀이 (1) | 2024.02.01 |
백준 15654 N과 M (5) 자바 풀이 (1) | 2024.01.31 |