itertools를 사용하지 않기 위해 조합과 순열을 재귀를 통해 구현
def combination(arr, n):
result = []
if n > len(arr):
return result
if n == 1:
for i in arr:
result.append([i])
elif n > 1:
for i in range(len(arr) - n + 1):
for j in combination(arr[i+1:], n-1):
result.append([arr[i]] + j)
return result
def permutation(arr, n):
result = []
if n > len(arr):
return result
if n == 1:
for i in arr:
result.append([i])
elif n > 1:
for i in range(len(arr)):
ans = [i for i in arr]
ans.remove(arr[i])
for p in permutation(ans, n - 1):
result.append([arr[i]] + p)
return result