• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

PriorityQueue 오류 수정 부분

20.08.10 15:14 작성 조회수 113

1

안녕하세요 강의를 잘 듣다가 궁굼한 점이 생겨서 질문 드립니다.

PriorityQueue<interval>(intervals, Comp2)</interval>

→ PriorityQueue<interval>(intervals.length, Comp2)</interval>

로 수정하는 부분에서 왜 length를 붙여줘야 오류가 없어지는지 궁금합니다.

+)

Queue<Interval> heap = new PriorityQueue<Interval>()

로 해서 우선순위큐에 저장하면 밑에 for문에서 인자를 넣고 빼는 과정을 수행해도 우선순위에 의해서 정렬이 자동으로 되는건가요?

답변 1

답변을 작성해보세요.

2

안녕하세요~만나서 반갑습니다~

질문주신

1.PriorityQueue<interval style="color:#000a12;font-family:'Noto Sans KR', -apple-system, system-ui, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', Helvetica;font-size:16px;box-sizing:inherit">(intervals, Comp2)</interval>

→ PriorityQueue<interval style="box-sizing:inherit">(intervals.length, Comp2)</interval>

로 수정하는 부분에서 왜 length를 붙여줘야 오류가 없어지는지 궁금합니다.

=>  원래 length를 넣어야합니다. 제공되는 형태입니다. 우리는 맞춰져야하죠

PriorityQueue 구현 방식이 다양합니다. 버젼이 혼재해서

예를들어 람다식으로 표현하면

new PriorityQueue<>((a, b)->a.start- b.start)  이런식으로 됩니다. 제가 조만간 정리영상을 넣을예정입니다.

이유는  PriorityQueue 문제는 기필코 나옵니다. 무조건

2. Queue<Interval> heap = new PriorityQueue<Interval>()

로 해서 우선순위큐에 저장하면 밑에 for문에서 인자를 넣고 빼는 과정을 수행해도 우선순위에 의해서 정렬이 자동으로 되는건가요?

=> 맞습니다. 그걸 하기 위해서 PriorityQueue를 쓰는거죠

다익스트라 알고리즘 같은것도 비교해가면서 PriorityQueue에 던져주면 알아서 정렬해줍니다.

MaxHeap, MinHeap 이 있습니다.  bst트리구조로 되어서 시간복잡도는 (logN)  빠른속도로 정렬해서

리턴해줍니다.

지금 질문 주신 내용은 아주 핵심입니다. 카카오 블라인드 코딩 2018인가에서 PriorityQueue 비슷한게 동시에 3개 나왔습니다