Solved problems

Algospot - 정렬 게임(SORTGAME)

coloredrabbit 2018. 7. 3. 17:55

* Algospot - 정렬 게임(SORTGAME, )

  [ 분류 - BFS ]


간단한데, 이상하게 자꾸 시간초과가 뜨는 문제다.


* 접근 방법

  1. 길이가 x인 수열을 한 번 이상의 연산을 수행했을 때, 정렬 결과로 나올 수 있는 경우의 수는 x!이다.

  2. 내부에서 연산을 수행하는 속도는 약 O(x)다. 따라서 1.의 결과로 보면 속도는 최대 8!*8이다.

  3. 하지만 이를 들어오는 쿼리마다 수행할 수는 없으므로 "미리" 저장을 해놓고 들어오는 입력에 따라 O(C lg(x!*x)) 시간으로 찾을 수 있도록 한다.

  4. 최대가 8이므로 길이 8짜리만 구하고, 나머지 길이에 대해서는 남는 부분을 오름차순으로 채우고 찾으면 된다.




- 코드