이 문제는 다양한 방법으로 풀 수 있는데, 그 중 제가 생각한 방법은 크게 3가지입니다.
- 배열을 이용해 직접 큐를 구현해서 푼다. 시뮬레이션을 직접 돌려 가며, 각 문서마다 중요도가 더 높은 문제가 있는지 확인한다.
- multiset에다가 모든 중요도를 넣어 놓고, 문서를 하나씩 출력할 때마다 그 문서에 해당하는 중요도를 제거해 나간다.
- 중요도는 겨우 9가지뿐이므로, "arr[k] = 중요도가 k인 문서의 개수"와 같은 식으로 배열을 만들고, 중요도가 더 높은 문서가 있는지 간단하게 확인한다.
아마 시간 복잡도로 따지면 3번이 가장 좋지만, 모두 제한 시간을 통과할 수 있을 겁니다.
dlqudgus2587 4년 전
질문 게시판에 있는 반례랑 테스트 케이스는 다 잘 돌아가는데 시간초과에서 계속 걸리네요..
중요도와 몇 번째 문서인지를 멤버로 갖는 구조체를 정의해서, 그 구조체를 데이터로 갖는 큐를 만들었습니다.
다른 글 보니까 정렬을 이용하시던데 그 부분이 잘 이해가 안가서 적용은 못했습니다. 입력한 순서가 중요한 것 같은데 정렬을 하면 그게 섞여서 문제가 생겨서 답이 제대로 출력이 안 됐습니다(아래 코드는 정렬 없이 작성한 코드입니다.)
시간을 줄이는데에 조언을 구하며, 이 문제에 왜 정렬을 써야하는 지도 혹시 답변해 주시면 감사하겠습니다.