Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프로젝트 후기
- 트리
- CompositionAPI
- 오라클
- URL입력
- 알고리즘
- 백준알고리즘
- 첫 리액트
- 간단 프로젝트
- SBS 개발
- SBS 본사
- 면접
- 뷰 리액트
- IT시스템개발
- Vue.js
- 1차면접
- 리액트
- 대문자
- 뷰
- 경력직
- 백준
- 자바
- MySQL
- 쟈스
- 사내시스템
- 웹 개발 면접 질문
- react
- 첫 React
- e-HR
- 뷰 리액트 비교
Archives
- Today
- Total
리주의 프로그래밍 공부
[15652] N과 M (4) 본문
방금 전에 올린 N과 M(2) 문제에서 하나만 수정하면 바로 맞추는 문제였다.
(혹시나 15650 N과 M(2)를 풀지 않았다면 그거먼저 풀고오면 도움이 될듯하다.)
[15650] N과 M (2)
다시 풀어보는 백트래킹 문제. 아직까지도 완벽히 숙지하지 못한 것 같다. (바로 N과 M 다른문제 풀러가야지) 우선 이 문제는 visited 배열이 필요가 없다. 왜냐하면 재귀적으로 호출할 때, +1을 해
leezu-prog.tistory.com
dfs를 호출할 때, i+1에서 i로만 바꿔주면 된다. 이유는 중복가능하기 때문이다.
비내림차순은 dfs를 아래서부터 시작하면 자연스레 따라온다.
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Scanner;
public class Main {
static int n,m;
static int[] arr;
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
arr = new int[m];
dfs(1, 0);
bw.flush();
}
public static void dfs(int a, int cnt) throws IOException {
// System.out.println("a : " + a + " cnt : " + cnt);
if(cnt == m) {
for(int i=0; i<m; i++) {
bw.write(arr[i] + " ");
}
bw.write("\n");
} else {
for(int i=a; i<=n; i++) {
arr[cnt] = i;
// N과 M (2)번문제에서는 a자리에 i+1을 넣었다.
dfs(i, cnt + 1);
}
}
}
}
'알고리즘 공부(백준)' 카테고리의 다른 글
[1991] 트리 순회 (0) | 2021.03.22 |
---|---|
[11650] 좌표 정렬하기 (0) | 2021.03.19 |
[15650] N과 M (2) (0) | 2021.03.19 |
[15651] N과 M (3) (0) | 2021.03.18 |
[9663] N-Queen (0) | 2021.03.18 |