https://www.acmicpc.net/problem/1358
# 백준 1358 하키
import math
w, h, x, y, p = map(int, input().split())
# 반지름, 각 원의 중심 좌표
r = h / 2
c1x, c1y = x, y+r
c2x, c2y = x+w, y+r
count = 0 # 링크 안에 있는 사람 수
for _ in range(p):
px, py = map(int, input().split())
# 각 원의 중심에서의 거리
d1 = math.sqrt((c1x - px) ** 2 + (c1y - py) ** 2)
d2 = math.sqrt((c2x - px) ** 2 + (c2y - py) ** 2)
if d1 <= r or d2 <= r:
count += 1
elif x <= px <= x+w and y <= py <= y+h:
count += 1
print(count)
주어지는 사람들의 좌표가 각 원 안에 있거나 중간에 있는 사각형 안에 있으면 되는 간단한 문제였습니다.
한 가지 주의할 점은 문제에서 경계도 포함이라 했기 때문에 범위 설정할 때 생각해야 합니다.
'알고리즘 > 백준' 카테고리의 다른 글
[Python] 백준 파이썬 2981 검문 (0) | 2022.10.10 |
---|---|
[Python] 백준 파이썬 1037 약수 (0) | 2022.10.09 |
[Python] 백준 파이썬 1004 어린 왕자 (1) | 2022.10.07 |
[Python] 백준 파이썬 1002 터렛 (0) | 2022.10.06 |
[Python] 백준 파이썬 3053 택시 기하학 (0) | 2022.10.05 |