일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 정렬
- 그리디알고리즘
- springboot
- 백준
- 알고리즘
- DFS
- SQL
- DP
- Greedy
- Database
- IntelliJ
- 다이나믹프로그래밍
- db
- 프로그래머스
- 우선순위큐
- 이펙티브자바
- 깊이우선탐색
- 데이터베이스
- select
- Spring
- mybatis
- join
- BFS
- 코테
- Effective Java
- 탐욕법
- 너비우선탐색
- 피보나치
- java
- mariaDB
Archives
- Today
- Total
땀두 블로그
[백준] 15650번 - N과 M (2) 본문


dfs를 이용하여 푸는 문제이다. 처음 접근은 콤비네이션 연산만큼의 결과 값이 나와서 이를 이용하여 풀려고 했는데 잘못된 방법임을 깨닫고 dfs로 풀어서 시간이 오래걸렸다. dfs로 출력의 앞에 나오는 숫자를 지정해주고, depth를 높혀가면서 M과 depth가 같았을 때 저장해두던 배열의 값을 출력하도록 하였다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class p15650 {
public static int a;
public static int b;
public static int[] ary;
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
a = Integer.parseInt(st.nextToken());
b = Integer.parseInt(st.nextToken());
ary = new int[b];
dfs(1, 0);
}
public static void dfs(int n, int depth) {
if (depth == b) {
for (int i = 0; i < ary.length; i++) {
System.out.print(ary[i] + " ");
}
System.out.println();
return;
}
for (int i = n; i <= a; i++) {
ary[depth] = i;
dfs(i + 1, depth + 1);
}
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1780번 - 종이의 수 (0) | 2022.03.22 |
---|---|
[백준] 1541번 - 잃어버린 괄호 (0) | 2022.03.22 |
[백준] 2579번 - 계단 오르기 (0) | 2022.03.22 |
[백준] 9375번 - 패션왕 신해빈 (0) | 2022.03.22 |
[백준] 1260번 - DFS와 BFS (0) | 2022.03.22 |
Comments