• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

KclosetPointsToOrigin 해설 중 질문있습니다.

19.09.27 10:43 작성 조회수 111

1

1. solve 메서드 구현 중

int[][]result = new int[k][2]; 라고 정의하셨는데
[[1,3],
 [-2,2]] 로 표현되기 때문에 k값에 따라서 행의 개수가 결정되고 열은 어짜피 [a,b] 꼴이므로 a b 두개니까 2라고 정의 하신건가요?

저 정사각형 배열 꼴로(points의 요소가 많다면 세로의 길이가 증가하는 직사각형 꼴) 생각하는게 맞나요?

2. 그리고 solve 에서 for(int[] p:points) 같은 경우에
points가 int[][] points = {{1,3},{-2,2}} 이므로

for문 안에 int[] p는 {1,3} 고 {-2,2}꼴이 맞나요??

3. 마지막으로, 오름차순 Comparator 정의한거에 따라서 값이 작은게 queue 에 먼저(밑으로)들어가지만((-2,2)가 밑으로), 일반적인 queue가 아니고 우선순위 queue 이므로 FIFO 가 아닌 그냥 우선순위가 높은(더 CLOSET한) (-2,2)가 나오는게 맞나요?
이 문제에서는 오름 차순조건 말고 우선순위에 대한 부분을 따로 지정해주지 않았으니, 그냥 FIFO로 생각하는게 맞나요?

답변 3

·

답변을 작성해보세요.

2

안녕하세요 질문 감사합니다 일단 제가 핸폰으로 답변드릴게요 나중에 컴으로 수정할게요

1. 이해하신거 맞고요. 예제는 k=1을 줬습니다 그래서 [1][2] 1행2열 즉 [-2,2]이거 한개 리턴합니다

2 네 이해하신거 맞고요. 한번 벗기면서 받는다고 이해하시면됩니다

3. 우선순위큐는 내부적으로 자기가 알아서 binary search tree 를 만들어요 무슨말이냐면 우선순위큐에 들어오는 애들을 min heap 설정하면 작은값부터 저장하죠 그래서 time complexity 가 Ologn  결록적으로 작으값부터 저장하게 만든거여요 Fifo는 아닙니다

이문제를 제가 priorityQueue로 풀었네요 github에 다른소스가,,다시 업데이트 하겠습니다

3번 질문 답변 이해안되시면 다시 물어주시고요 제가 이문제도 그 내용 업데이트할게요

1

네 맞습니다

감사합니다 . 즐코딩하세요~

0

선생님. 답변 정말 감사드리구요.
3번 질문 같은 경우에, 우선순위 큐의 개념은 이해했고, github 코드와 상관없이 해당 문제에서 우선순위 큐로 푸셔가지고 질문했었는데요.

우선순위 큐로 풀었기에, FIFO 와는 상관없이 우선순위 높은게 먼저나가데 되는데
내부적으로 만들어지는 BST에 의해 우선순위에 따라서 '작은 값' 이 먼저 출력된다고 이해하는게 맞을까요?