๐Ÿฅž BE
home

973_K Closet Points to Origin

๋‹ด๋‹น์ž
์™„๋ฃŒ ์—ฌ๋ถ€
Solved
์š”์•ฝ
๋‚ ์งœ
2024/07/12
ํƒœ๊ทธ
์ž๋ฃŒ๊ตฌ์กฐ
๋‚œ์ด๋„
Medium
์ถœ์ฒ˜
LeetCode

์ฝ”๋“œ

import java.util.Comparator; import java.util.PriorityQueue; class Solution { public int[][] kClosest(int[][] points, int k) { // Point ํด๋ž˜์Šค๋ฅผ ์ €์žฅํ•˜๋Š” ์šฐ์„ ์ˆœ์œ„ ํ๋กœ, ์ •๋ ฌ ๊ธฐ์ค€์€ distance๋กœ ํ•œ๋‹ค. PriorityQueue<Point> pq = new PriorityQueue<>(Comparator.comparingLong(a -> a.distance)); // ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์€ ์ขŒํ‘œ ๋ชฉ๋ก ์ˆœํšŒ for (int[] point : points) { // ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ long distance = (long) point[0] * point[0] + (long) point[1] * point[1]; // ์šฐ์„ ์ˆœ์œ„ ํ์— ๊ฑฐ๋ฆฌ์™€ ์ขŒํ‘œ๋ฅผ Point ํด๋ž˜์Šค๋กœ ๋‹ด์•„ ์‚ฝ์ž… pq.add(new Point(distance, point)); } int[][] results = new int[k][]; // k๋ฒˆ ๋งŒํผ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ฒฐ๊ณผ ์ถ”์ถœ for (int i = 0; i < k; i++) { results[i] = pq.poll().point; } return results; } static class Point { long distance; int[] point; // ๊ฑฐ๋ฆฌ์™€ ์ขŒํ‘œ๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๋Š”๋‹ค public Point(long distance, int[] point) { this.distance = distance; this.point = point; } } }
Java
๋ณต์‚ฌ
์ฃผ์–ด์ง„ ์ ๋“ค ์ค‘์—์„œ ์›์ (0, 0)์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด k๊ฐœ์˜ ์ ์„ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค.
์ฃผ์–ด์ง„ ์ ๋“ค์„ ๊ฑฐ๋ฆฌ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ k๊ฐœ์˜ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ(PriorityQueue)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํšจ์œจ์ ์œผ๋กœ ์ ๋“ค์„ ๊ด€๋ฆฌํ•ด์•ผํ•œ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ ์•„์ด๋””์–ด

์œ„ ์ฝ”๋“œ์—์„œ๋Š” ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ณ , ๋Œ€์‹  ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ์˜ ์ œ๊ณฑ์„ ๊ณ„์‚ฐํ–ˆ๋‹ค.
์ด๋Š” ์‹ค์ œ ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ๋ฅผ ๋น„๊ตํ•  ๋•Œ ์ œ๊ณฑ๊ทผ์„ ๊ณ„์‚ฐํ•˜๋Š” ๋Œ€์‹  ๋‘ ๊ฑฐ๋ฆฌ์˜ ์ œ๊ณฑ์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข€ ๋” ํšจ์œจ์ ์ด๋‹ค!