https://www.huangwenchao.com.cn/2015/05/python-permutation.html
쓸일이 많을것같아서 저장. 파이썬의 itertools모듈에 permutations가 있지만 다음거 구하는게 없이
전부 다 구하는거다. 종종 다음 permutations가 필요할 때가 있는데 그때를 위해 저장.
# -*- encoding: cp949 -*- def next_permutation(a): if len(a) < 2: return False i = len(a)-2 while i >= 0 and a[i] >= a[i+1]: i -= 1 if i < 0: return False j = i + 1 k = len(a) - 1 while a[i] >= a[k]: k -= 1 (a[i], a[k]) = (a[k], a[i]) a[j:] = a[:j-1:-1] return a def prev_permutation(a): if len(a) < 2: return False i = len(a)-2 while i >= 0 and a[i] <= a[i+1]: i -= 1 if i < 0: return False j = i + 1 k = len(a) - 1 while a[i] <= a[k]: k -= 1 (a[i], a[k]) = (a[k], a[i]) a[j:] = a[:j-1:-1] return a print next_permutation([4,5,4]) #다음 순열이 없으면 False 리턴, 있으면 순열 리턴. print prev_permutation([4,5,4])
n번째 순열 구하기.
# -*- encoding: cp949 -*- from math import factorial, floor def kthperm(S, k): # nonrecursive version P = [] while S != []: f = factorial(len(S)-1) i = int(floor(k/f)) x = S[i] k = k%f P.append(x) S = S[:i] + S[i+1:] return P n=input() print kthperm([1,2,3,4],n-1)
'Python > 2.7 information' 카테고리의 다른 글
python 딕셔너리에 관하여, 파이써닉하게 코드 짜기 (0) | 2016.11.24 |
---|---|
다차원 리스트를 만들고 복사하는 것에 대해서. (0) | 2016.11.08 |
파이썬의 변수에 관하여. (0) | 2016.09.17 |
dict과 list에서 어떤 값을 찾을 경우. (0) | 2016.08.08 |
in operator 탐구. (0) | 2016.06.30 |