순열과 조합을 구현해서 출력하라는 문제가 있는데
아무리 짱구를 굴려봐도 현재 내 능력치에서는 역부족이었다... 그래서 모범답안(?)을 봤는데
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 |
댓글