11659번 - 구간 합 구하기 4
모스알고리즘을 공부중인데, 두 코드의 수행속도 차이에 대해 질문드립니다.
25, 26번째 줄을
if (query[i].s < query[j].s) temp[k++] = query[i++];
else if (query[i].s == query[j].s && query[i].e < query[j].e) temp[k++] = query[i++];
이런 식으로 짜면 800ms나 걸리는데 아래 코드와 같이 바꾸면 100ms로 줄어듭니다.
왜 이렇게 큰 차이가 나는지 잘 모르겠습니다.
말씀하신 코드는 모스 알고리즘이 전혀 아닌 것 같은데요. 그러면 최악의 경우 시간 복잡도가 O(NM)이라 시간 초과가 나야 할 것 같은데 오히려 데이터가 약해서 빠르게 통과되는 게 아닌가 싶습니다.
아 그래요? 죄송합니다
공부를 더 깊이있게 하고 질문을 하겠습니다.
댓글을 작성하려면 로그인해야 합니다.
kdr06006 4년 전
모스알고리즘을 공부중인데, 두 코드의 수행속도 차이에 대해 질문드립니다.
25, 26번째 줄을
if (query[i].s < query[j].s) temp[k++] = query[i++];
else if (query[i].s == query[j].s && query[i].e < query[j].e) temp[k++] = query[i++];
이런 식으로 짜면 800ms나 걸리는데 아래 코드와 같이 바꾸면 100ms로 줄어듭니다.
왜 이렇게 큰 차이가 나는지 잘 모르겠습니다.