Skip to content

Commit

Permalink
[Silver II] Title: N과 M (9), Time: 188 ms, Memory: 18976 KB -BaekjoonHub
Browse files Browse the repository at this point in the history
  • Loading branch information
dukbong committed Feb 14, 2024
1 parent 3a5df80 commit 899b252
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 0 deletions.
56 changes: 56 additions & 0 deletions 백준/Silver/15663. N과 M (9)/N과 M (9).java
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Main {

int limit, size;
boolean[] visited;
int[] result, array;
StringBuilder sb = new StringBuilder();

public static void main(String[] args) throws Exception {
new Main().solution();
}

public void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] question = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
limit = question[1];
size = question[0];
array = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
visited = new boolean[array.length];
result = new int[limit];
Arrays.sort(array);
dfs(0);
System.out.println(sb);

}

public void dfs(int cnt) {
if (cnt == limit) {
for (int i = 0; i < limit; i++) {
sb.append(result[i]).append(" ");
}
sb.append("\n");
}

else {
int before = 0;
for (int i = 0; i < size; i++) {
if (!visited[i] && before != array[i]) {
visited[i] = true;
result[cnt] = array[i];
before = array[i];
dfs(cnt + 1);
visited[i] = false;
}
}
}
}

}
36 changes: 36 additions & 0 deletions 백준/Silver/15663. N과 M (9)/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# [Silver II] N과 M (9) - 15663

[문제 링크](https://www.acmicpc.net/problem/15663)

### 성능 요약

메모리: 18976 KB, 시간: 188 ms

### 분류

백트래킹

### 제출 일자

2024년 2월 14일 13:00:51

### 문제 설명

<p>N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.</p>

<ul>
<li>N개의 자연수 중에서 M개를 고른 수열</li>
</ul>

### 입력

<p>첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)</p>

<p>둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.</p>

### 출력

<p>한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.</p>

<p>수열은 사전 순으로 증가하는 순서로 출력해야 한다.</p>

0 comments on commit 899b252

Please sign in to comment.