예) 'ABC' 로 만들 수 있는 경우의 수 -> 'ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA'
for문으로 구현.
import copy
def permute(l):
n = len(l)
result = []
c = n * [0]
result.append(l)
i = 0
while i < n:
if c[i] < i:
if i % 2 == 0:
tmp = l[0]
l[0] = l[i]
l[i] = tmp
else:
tmp = l[c[i]]
l[c[i]] = l[i]
l[i] = tmp
result.append(copy.copy(l))
c[i] += 1
i = 0
else:
c[i] = 0
i += 1
return result
l = ['A', 'B', 'C']
print(permute(l))
=========결과===========
[['C', 'B', 'A'], ['B', 'A', 'C'], ['A', 'C', 'B'], ['C', 'B', 'A']]
import itertools
pool = ['A', 'B', 'C']
print(list(map(''.join, itertools.permutations(pool))))
=========결과=========
['ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA']