• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

PriorityQueue 말고 다른 방법

20.11.26 15:59 작성 조회수 92

4

solve() 메소드에서 파라미터로 받은 list를
Arrays.sort(list, (a, b) -> ((a[0]*a[0])+(a[1]*a[1]))-((b[0]*b[0])+(b[1]*b[1])));
이와 같이 sorting하고, sorting된 list를 return 해줘서

최종적으로 main()에서 for문을 돌려 k개만 print하도록 풀어봤는데,
PriorityQueue를 사용하는게 이 문제에선 더 좋은 방법일까요?

답변 1

답변을 작성해보세요.

2

안녕하세요.

아주 좋은 질문입니다. 이렇게 질문하면서 압박면접을 하기 쉬운 문제죠..

1. 이문제는 PriorityQueue를 이용해서 푸는게 가장 쉬운거고

2. 다른 방법으로는 원점에서 부터 거리를 구한값들을 소팅하는거죠.

가장단순하죠. 소팅에는 무슨 소팅이 있는지 물어 볼 수 있습니다.

퀵소트, 선택정렬, 버블정렬..머지소팅 각각에 빅오값을 비교해보라 할 수 있습니다.

소팅에 기본기를 물어보면서 압박면접도 할 수 있고요..

소팅을 철저히 분석해보시죠 이번기회엥

저는 퀵소트를 좋아합니다. 빅오 시간복잡도 O(nlogn) 인데 부연 설명해주고..

즐코딩하세요~