본문 바로가기
Etc./Python

[Python] itertools-2

by ahj 2021. 10. 10.

순열과 조합을 구현해서 출력하라는 문제가 있는데

아무리 짱구를 굴려봐도 현재 내 능력치에서는 역부족이었다... 그래서 모범답안(?)을 봤는데

def permute(arr):
    result = [arr[:]]
    c = [0] * len(arr)
    i = 0
    while i < len(arr):
        if c[i] < i:
            if i % 2 == 0:
                arr[0], arr[i] = arr[i], arr[0]
            else:
                arr[c[i]], arr[i] = arr[i], arr[c[i]]
            result.append(arr[:])
            c[i] += 1
            i = 0
        else:
            c[i] = 0
            i += 1
    return result

이런 괴랄한.. 이해하기도 싫어서 우선 정답 돌려보고 다른 사람들 답안을 봤더니 결국 다들 나랑 똑같이 itertools를 썼더라..ㅎㅎ

itertools.permutations(iterable, r=None)

itertools.combinations(iterable, r)

이렇게 사용하면 된다.

약간 그냥 nPr, nCr 쓰듯이 생각하고 넣어주면 될것 같다 ㅋㅋ 저 iterable을 순열, 조합 돌려준다!

구현하는 방법은.. 요즘 보고 있는 알고리즘 강의 중간에 recursion으로 구현하는 거 있던데 그때 공부하는거로!ㅎㅎ

'Etc. > Python' 카테고리의 다른 글

[Python] dictionary에서 value로 key 구하기  (0) 2021.10.11
[Python] collections- Counter  (0) 2021.10.11
[Python] list 나름 정리  (0) 2021.10.10
[Python] itertools  (0) 2021.10.10
[Python] join  (0) 2021.10.10

댓글