• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

Queue 선언

21.01.27 10:55 작성 조회수 139

1

Queue<int[]> queue = new PriorityQueue<>(points.length,comp);

1 제너릭 int[] 부분이 어떻게 생겼는지 상상이 잘 가지 않습니다.

2. 객체 생성시 (points.length,comp) 부분에서 points.length 는 왜 지정하는것인가요?

답변 1

답변을 작성해보세요.

0

안녕하세요.

PriorityQueue는 너무 자주 나와서 제가 강의를 하나 따로 만들었습니다.(코딩테스트 전 알아야할 개념문제입니다)

이 순서로 compareTo(), comparator(), PriorityQueue() 순서데로 공부하셔야 합니다.

1 제너릭 int[] 부분이 어떻게 생겼는지 상상이 잘 가지 않습니다.

=> int배열로 담은 것들을 비교하겠다는 말입니다.

무슨말이냐면  좌표값 {1,3},{-2,2}을 예제에서 줬잖아요.

여기서 1,3을 받아서 1*1+3*3 =10 , 두번째 값 -2,2를 받아서 -2*-2+2*2=8 이렇게 얻을려고 합니다.

그래서 int[]형태로 {1,3}을 담을 그릇을 준비하는겁니다.

잘 이해가 안가시면

맵을 예를들면  Map<key, value> 에서 (1,2), (2,10) 이렇게 맵이있는데 value 2, 10을 비교하고 싶다

그러면 아래처럼 Map을 담을 밥그릇을 준비하면됩니다.

Queue<Map.Entry<Integer, Integer>> queue = new PriorityQueue<>(comp);

또는

Queue<Map.Entry<Integer, Integer>> queue = new PriorityQueue<>( (a,b) -> a.getValue()==b.getValue() ? b.getKey().compareTo(a.getKey()) : a.getValue()-b.getValue());

2. 객체 생성시 (points.length,comp) 부분에서 points.length 는 왜 지정하는것인가요?

=> 생략해도 됩니다. 

     함수 형식에 맞춰준건데 옛날에는 필요했는데 지금은 안넣어도 됩니다.

더 궁금하시면 답글 남겨주세요.

표로 이해하실때ㄱ까지 알려드리겠습니다.