11003번 - 최솟값 찾기
node_t 를 원소로 가지는 deque를 설정하고 새로운 값(num)을 받을 때. 아래와 같은 절차대로 업데이트했습니다.
head는 deque의 마지막 부분 인덱스이고, tail은 deque의 첫 부분 인덱스입니다.
- 절차
1. num이 deque의 마지막 값보다 작을 경우, 마지막 값을 없애고 새로운 마지막값과 num을 비교하는 작업을 반복한다.
2. num이 deque의 마지막 값보다 클 경우, 삽입한다.
3. 현재 tail이 num의 인덱스와 l이상 차이나는 경우 한 deque의 앞부분을 제거한다.
아마도 1번에서 시간초과가 나는 것 같은데 최악의 경우에도 O(N2)는 안 날 것 같은데 어떤 문제가 있는지 모르겠습니다.
deque가 정렬되어있으니까 이중분할로 찾아보기도 했는데 그래도 시간초과가 납니다.
최악의 경우에 L M 이 5000000 인 경우를 고려해보면 꽤 많은 탐색을 요구하는 코드입니다.
다른 방식으로 접근을 시도해봐야 할것 같습니다.
댓글을 작성하려면 로그인해야 합니다.
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가 정렬되어있으니까 이중분할로 찾아보기도 했는데 그래도 시간초과가 납니다.