재귀를 통한 조합, 순열 구현 (Python)

ewillwin·2023년 4월 8일
0

Algorithm

목록 보기
6/6

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
profile
💼 Software Engineer @ LG Electronics | 🎓 SungKyunKwan Univ. CSE

0개의 댓글