반응형
문제 유형
Recursion
작성 코드
import java.util.Scanner;
public class Main {
static StringBuilder answer;
static int N;
static int M;
static String[] givenNums;
static String[] row;
static boolean[] checks;
public static void recursive(int depth, int index) {
if (depth == M) {
for (String element : row) {
answer.append(element).append(" ");
}
answer.append("\n");
return;
}
for (int i = index; i < givenNums.length; i++) {
if (!checks[i]) {
checks[i] = true;
row[depth] = givenNums[i];
recursive(depth+1, i);
checks[i] = false;
}
}
}
public static void input() {
Scanner sc = new Scanner(System.in);
N = -1;
M = 6;
while (N != 0) {
String[] temp = sc.nextLine().split(" ");
givenNums = new String[temp.length - 1];
checks = new boolean[temp.length - 1];
System.arraycopy(temp, 1, givenNums, 0, givenNums.length);
row = new String[M];
answer = new StringBuilder();
N = Integer.parseInt(temp[0]);
recursive(0, 0);
System.out.println(answer);
answer.setLength(0);
}
}
public static void main(String[] args) {
input();
}
}
접근 방식
1. 주어진 수열에서 6개의 중복되지 않는 조합을 생성해서 출력해야한다.
2. 그래서 중복을 방지하는 Checks를 이용해 하나의 조합안에서의 중복방지와 Index를 만들 전체 조합에서의 중복방지를 진행했다.
개선 사항
솔직히 없다.
반응형
'알고리즘 > JAVA' 카테고리의 다른 글
Binary Search: 백준 세용액 - 2473 (0) | 2024.11.14 |
---|---|
Binary Search: 백준 가장 긴 증가하는 부분 수열 2 - 12015 (0) | 2024.11.13 |
Recursion: 백준 N과 M(7)-15656 (0) | 2024.08.26 |
Recursion: 백준 N과 M(8)-15657 (0) | 2024.08.23 |
Recursion: 백준 N과 M(6)-15655 (0) | 2024.08.22 |