<--- 리트코드 77. Combinations --->
# 문제: 전체 수 n을 입력받아 k개의 조합을 리턴하라.
입력
n = 4, k = 2 |
출력
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4] ] |
# 풀이
1. DFS로 k개 조합 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
def combine(n, k):
results = []
def dfs(elements, start, k):
if k == 0:
results.append(elements[:])
for i in range(start, n + 1):
elements.append(i)
dfs(elements, i + 1, k -1)
elements.pop()
dfs([], 1, k)
return results
n = 4
k = 2
print(combine(n, k))
|
cs |
2. itertools 모듈 사용
1
2
3
4
5
6
7
8
9
|
import itertools
def combine(n, k):
return list(itertools.combinations(range(1, n + 1), k))
n = 4
k = 2
print(combine(n, k))
|
cs |
'Python' 카테고리의 다른 글
파이썬 알고리즘 인터뷰 - 37. 부분 집합 (0) | 2022.01.30 |
---|---|
파이썬 알고리즘 인터뷰 - 36. 조합의 합 (0) | 2022.01.30 |
파이썬 알고리즘 인터뷰 - 34. 순열 (0) | 2022.01.30 |
파이썬 알고리즘 인터뷰 - 33. 전화 번호 문자 조합 (0) | 2022.01.30 |
파이썬 알고리즘 인터뷰 - 32. 섬의 개수 (0) | 2022.01.29 |