velog에서 이전한 글 입니다.
combination
static List<List<Integer>> combination(List<Integer> list, List<Integer> result, int depth) {
List<List<Integer>> r = new ArrayList<>();
if (result.size() == depth) {
r.add(result);
return r;
}
for (int i = 0; i < list.size(); i++) {
List<Integer> n_list = new ArrayList<>(list.stream().skip(i + 1).collect(Collectors.toList()));
List<Integer> n_result = new ArrayList<>(result.stream().collect(Collectors.toList()));
n_result.add(list.get(i));
List<List<Integer>> rr = combination(n_list, n_result, depth);
for (List<Integer> rrr : rr) {
r.add(rrr);
}
}
return r;
}
list slice 복사 : list.stream().skip(i + 1).collect(Collectors.toList());
앞에서부터 skip 개수만큼 건너뛴다. 마지막 변환을 stream().toList()
로 가능한데 8은 안됨으로 Collectors
사용
add가능한 list를 위해 new ArrayList<>()
로 만든다.
int[] -> Integer[]
Integer[] n_nums = Arrays.stream(nums).boxed().toArray(Integer[]::new);
위 코드는 기존에 posting한 적 있지만 기억하자는 의미로
list sum
int sum = rr.stream().mapToInt(Integer::intValue).sum();
'Language > Java' 카테고리의 다른 글
자바) ArrayList LinkedList 시간 비교 (23-07-06) (0) | 2023.07.13 |
---|---|
자바) ArrayList Capacity (23-07-06) (0) | 2023.07.13 |
자바) 와일드카드 (23-05-30) (0) | 2023.07.13 |
자바) List (23-05-26) (0) | 2023.07.13 |
자바) enum, 열거형 (23-05-24) (0) | 2023.07.13 |