1. 순열이 주어졌을 때, 다음 순열(사전순으로 바로 다음에 오는 순열)을 구하는건 O(n)에 가능하다 ㅇㅅㅇ
이 방법으로 n!개를 모두 구하면 O(n*n!)이 걸리는데, 이게 느려보여도 사실 이것보다 복잡도를 내릴 수는 없어서 딱히 느린게 아니다 ㅋㅅㅋ 각 순열을 출력할 때 O(n)이 걸리니까 ㅇㅅㅇ;;

https://ideone.com/rihkAh

2. 사실 위의 알고리즘하고 비슷한데 순서가 빠진 것도 있다 ㅇㅅㅇ 내부적으로 상태를 가져서 투명한 함수는 아니지만 대신 연산 수는 더 적으므로 최소한 상수 배 만큼은 빠르겠지
다만 그렇다고 해도 출력이 병목을 먹어서 O(n*n!)인건 그대로일듯 하다 ㅇㅅㅇ;;

https://ideone.com/WzzmkX