zjtlfk   1년 전

문제에서 의도한 방향이 아닌 것 같지만 합병정렬로 구현해보았습니다..

예제나 반례들을 돌렸을 때는 잘 돌아가는데, 제출을 해보니 시간초과가 발생하네요

값을 삽입할때마다 합병정렬을 실행하는데 이거 때문에 시간초과가 발생하는걸까요?

혹시 시간복잡도 때문이라면 이 코드의 시간복잡도를 설명해주시면 감사하겠습니다 

bnb2011   1년 전

큐에 값을 삽입하는 연산의 횟수가 O(Q)번이고, Merge Sort는 O(NlogN)의 시간이 걸리기 때문에 작성하신 코드의 시간 복잡도는 O(QNlogN)이 됩니다.

zjtlfk   1년 전

그럼 merge sort 로는 무조건 시간초과가 발생할 수 밖에 없는 건가요?

bnb2011   1년 전

네, 매 쿼리마다 Merge Sort를 수행하는 방식으로는 이 문제를 해결하기 어렵습니다.

이 문제는 삽입 삭제 연산이 적당히 빠르게 이루어져야 하며, 최댓값과 최솟값 또한 빠르게 구할 수 있는 자료구조를 구현하는 것이 문제의 의도입니다.

zjtlfk   1년 전

제가 너무 깊게 생각을 안해본것 같네요..

알려주셔서 감사합니다

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