๐งฉ Algorithm/๊ตฌํ
[LeetCode] 1828๋ฒ: ์ ์์ ์ ๊ฐ์
HelloRabbit
2023. 4. 28. 01:33
728x90
Hint
1. ์๊ณผ ์ ๋ค์ ์ต๋ ๊ฐ์๊ฐ ๊ฐ๊ฐ 500๊ฐ์ด๊ธฐ ๋๋ฌธ์ for๋ฌธ 2๊ฐ๋ฅผ ์ฌ์ฉํด์ ์ผ์ผ์ด ๋น๊ตํด๋ ๋๋ค
2. Follow up์ O(n)์ผ๋ก ํ์ด๋ณด๋ผ๊ณ ๋์ด์์ง๋ง ์ด๊ฑด ๋์ค์ ๋์ ...^^
LeetCode 1828๋ฒ: Queries on Number of Points Inside a Circle (ํ์ด๋ณด๊ธฐ)
class Solution:
def countPoints(self, points: List[List[int]], queries: List[List[int]]) -> List[int]:
# points๋ฅผ x, y ์์๋ก ์์ ์ซ์๋ถํฐ ํฐ ์ซ์๊น์ง ์ ๋ ฌํ๋ค
points = sorted(points, key=lambda x: (x[0],x[1]))
answer = []
for query in queries:
x, y, r = query
count = 0
for point in points:
px, py = point
# points๋ฅผ ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์ ์์ ์ต๋ x, y๋ฅผ ๋์ด๊ฐ๋ ์ ์ดํ๋ก๋ ํ์ธ ํ ํ์๊ฐ ์๋ค
if (px >= x + r) & (py >= y + r):
break
# ์ ์ค์ฌ์์ point๊น์ง์ ๊ธธ์ด๊ฐ ๋ฐ์ง๋ฆ๋ณด๋ค ๊ฐ๊ฑฐ๋ ์์ ๋๋ง ์ ์์ ์๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์์ ํฌํจํ๋ค
if r >= ((px-x)**2 + (py-y)**2)**0.5:
count += 1
answer.append(count)
return answer