보통 순열이나 조합을 구현할 때는 재귀함수를 이용한 dfs로 구현을 하게 됩니다. 하지만 저에게는 재귀함수보다는 stack을 이용한 구현이 좀 더 직관적이고 이해가 쉽기때문에 stack을 이용한 구현방법을 살펴보겠습니다. 순열 lst = [1,2,3,4] n = 2 permutations = [] stack = [([x], [i]) for i, x in enumerate(lst)] # 순열저장리스트, 인덱스리스트 print('초기상태 스택 :', stack) while stack: per, idx_list = stack.pop() # n개를 모두 뽑은 경우 순열을 추가한 후 continue if len(per)==n: permutations.append(per) continue # n개를 뽑지않은경우 f..