티스토리 뷰
이 문제는 조합을 구하는 문제입니다. 단, 같은 조합은 한번만 출력해야하기 때문에 하나의 조합으로 선택된 수를 문자열로 만든 뒤, 기존에 선택된 문자열의 묶음 Set에 저장되어 있지 않은 경우에만 출력하도록 했습니다.
자바 코드는 다음과 같습니다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Main {
private static Set<String> answer = new HashSet<>();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int n = Integer.parseInt(input[0]);
int m = Integer.parseInt(input[1]);
int[] nums = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
Arrays.sort(nums);
combination(nums, new boolean[n], n, m, 0);
}
private static void combination(int[] nums, boolean[] selected, int n, int m, int start) {
if (m == 0) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < selected.length; i++) {
if (selected[i]) {
sb.append(nums[i]).append(" ");
}
}
if (!answer.contains(sb.toString())) {
answer.add(sb.toString());
System.out.println(sb);
}
return;
}
for (int i = start; i < n; i++) {
selected[i] = true;
combination(nums, selected, n, m - 1, i + 1);
selected[i] = false;
}
}
}
'알고리즘' 카테고리의 다른 글
[백준알고리즘] 15666 - N과 M (12) (0) | 2021.05.11 |
---|---|
[백준알고리즘] 15665 - N과 M (11) (0) | 2021.05.11 |
[백준알고리즘] 15663 - N과 M (9) (0) | 2021.05.10 |
[백준알고리즘] 15657 - N과 M (8) (0) | 2021.05.08 |
[백준알고리즘] 15656 - N과 M (7) (0) | 2021.05.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- DFS
- map
- Dynamic Programming
- ECR
- spring
- string
- search
- java
- Baekjoon
- 조합
- Algorithm
- EC2
- 순열
- sort
- programmers
- CodePipeline
- CodeDeploy
- 에라토스테네스의 체
- array
- AWS
- permutation
- CodeCommit
- 프로그래머스
- SWIFT
- BFS
- 수학
- ionic
- cloudfront
- Combination
- 소수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함