조합을 이용해서 풀어야 하는 문제인것은 알았다, 하지만 재귀나, 백트레킹을 이용해서 직접 조합을 구현하는 것이 어려워서 인터넷상에 있는 코드를 보고 조합 부분을 구현했는데, 실제로 코딩테스트를 보러가면 외부 코드 참조가 안되는거 맞나? 만약 그렇다면 조합을 구하는 코드를 직접 짜야 하는데, 나중에 틈틈히 보고 익숙해지도록 하자
static void combination(int[] arr, boolean[] visited, int start, int n, int r) {
if (r == 0) {
print(arr, visited, n);
return;
}
for (int i = start; i < n; i++) {
visited[i] = true;
combination(arr, visited, i + 1, n, r - 1);
visited[i] = false;
}
}
static void print(int[] arr, boolean[] visited, int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
if (visited[i]) {
sum += arr[i];
}
}
cnt++;
num.add(sum);
}
참조 : https://bcp0109.tistory.com/15
~~~