리트코드) 77.조합(자바)
https://leetcode.com/problems/combinations/
문제 : 전체 수 n을 입력받아 k개의 조합을 리턴하라
입력 : n=4, k=2 출력 : [[1,2,3], [1,2,4], [1,3,4], [2,3,5], [2,4,5], [3,4,5]]
- 순서가 상관없으므로 [1,2,3]과 [1,3,2]가 같다.
- n은 전체 수이고, k는 뽑을 갯수이다
import java.util.List;
import java.util.ArrayList;
class Solution {
List<List<Integer>> result;
public List<List<Integer>> combine(int n, int k) {
result = new ArrayList<List<Integer>>();
dfs(new ArrayList<>(), n, k);
return result;
}
public void dfs(ArrayList<Integer> temp, int n, int k) {
if(k == 0) { // k개를 다 뽑았으면 결과리스트에 추가
result.add(temp);
}
for(int i=n; i>=k && k>0; --i) {
ArrayList<Integer> t = new ArrayList<>(temp);
t.add(i);
dfs(t, i-1, k-1);
}
}
}