티스토리 뷰
백준 N과 M(2) (실버 Ⅲ)
1. 가지치기
import java.util.Scanner;
public class Main {
static int n;
static int m;
static int[] path = new int[9];
static boolean[] used = new boolean[9];
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
m = scanner.nextInt();
run(0, 0);
System.out.println(sb);
}
private static void run(int level) {
if(level > 1 && path[level - 1] < path[level - 2]) return;
if(level == m) {
for(int i = 0; i < m; i++) {
sb.append(path[i] + " ");
}
sb.append("\n");
return;
}
for(int i = 1; i <= n; i++) {
if(!used[i]) {
path[level] = i;
used[i] = true;
run(level + 1);
path[level] = 0;
used[i] = false;
}
}
}
}
if(level > 1 && path[level - 1] < path[level - 2]) return;
path 배열이 오름차순이 아니면 가지치기를 한다.
2. start 변수를 추가해서 반복문 시작(i값)이 다음에 실행될 때 1씩 늘어나게 해주기
import java.util.Scanner;
public class N과M_2 {
static int n;
static int m;
static int[] path = new int[9];
static boolean[] used = new boolean[9];
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
m = scanner.nextInt();
run(1, 0);
System.out.println(sb);
}
private static void run(int start, int level) {
if(level == m) {
for(int i = 0; i < m; i++) {
sb.append(path[i] + " ");
}
sb.append("\n");
return;
}
for (int i = start; i <= n; i++) {
path[level] = i;
run(i + 1, level + 1);
path[level] = 0;
}
}
}
for (int i = start; i <= n; i++) {
path[level] = i;
run(i + 1, level + 1);
path[level] = 0;
}
start 변수를 재귀 함수에 추가해서 +1씩 되게 해준다.
'알고리즘' 카테고리의 다른 글
[SWEA] 햄버거 다이어트 - 5215 (0) | 2024.11.16 |
---|---|
[14002] 가장 긴 증가하는 부분 수열 4 - Java (1) | 2024.11.15 |
0-1 BFS (1) | 2024.04.04 |
[4485] 녹색 옷 입은 애가 젤다지? - Java (0) | 2024.02.05 |
[15651] N과 M(3) - Java (0) | 2023.12.22 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자바
- null
- @ConfigurationProperties
- 메인메소드
- Spring
- 이진탐색
- @Value
- 티스토리챌린지
- @Spring
- id생성전략
- 백준
- Java
- springboot
- Optional
- 생성자
- 동등성
- StreamAPI
- JPA
- checkedException
- @NoArgsConstructor
- N+1문제
- uncheckedException
- Thymeleaf
- 유효성 검사
- lowerBound
- NPE
- 일급컬렉션
- upperBound
- ddl-auto
- 오블완
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함