utoutouto   2년 전

node_t 를 원소로 가지는 deque를 설정하고 새로운 값(num)을 받을 때. 아래와 같은 절차대로 업데이트했습니다.

head는 deque의 마지막 부분 인덱스이고, tail은 deque의 첫 부분 인덱스입니다.

- 절차

1. num이 deque의 마지막 값보다 작을 경우, 마지막 값을 없애고 새로운 마지막값과 num을 비교하는 작업을 반복한다.

2. num이 deque의 마지막 값보다 클 경우, 삽입한다.

3. 현재 tail이 num의 인덱스와 l이상 차이나는 경우 한 deque의 앞부분을 제거한다.

아마도 1번에서 시간초과가 나는 것 같은데 최악의 경우에도 O(N2)는 안 날 것 같은데 어떤 문제가 있는지 모르겠습니다.

deque가 정렬되어있으니까 이중분할로 찾아보기도 했는데 그래도 시간초과가 납니다.

kdh6429   2년 전

최악의 경우에 L M 이 5000000 인 경우를 고려해보면 꽤 많은 탐색을 요구하는 코드입니다.

다른 방식으로 접근을 시도해봐야 할것 같습니다.

댓글을 작성하려면 로그인해야 합니다.