반응형
1. 문제
2. 코드
import math
w, h, x, y, p = map(int, input().split())
cnt = 0
for _ in range(p):
p_x, p_y = map(int, input().split())
if math.sqrt((p_x - x)**2 + (p_y - (y+h/2))**2) <= h/2 or math.sqrt((p_x-(x+w))**2 + (p_y - (y+h/2))**2) <= h/2 or (x <= p_x <= x+w and y <= p_y <= y+h):
cnt += 1
print(cnt)
3. 풀이
세 가지 케이스를 고려하면 된다.
1) 왼쪽 반원 안에 있는 경우 : math.sqrt((p_x - x)**2 + (p_y - (y+h/2))**2) <= h/2
2) 오른쪽 반원 안에 있는 경우 : math.sqrt((p_x-(x+w))**2 + (p_y - (y+h/2))**2) <= h/2
3) 가운데 직사각형 안에 있는 경우 : x <= p_x <= x+w and y <= p_y <= y+h
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 1059 - 좋은 구간 (파이썬) (0) | 2022.08.31 |
---|---|
[백준] 2981 - 검문 (파이썬) (0) | 2022.08.20 |
[백준] 2477번 - 참외밭 (파이썬) (0) | 2022.08.17 |
[백준] 11478번 - 서로 다른 부분 문자열의 개수 (파이썬) (0) | 2022.08.17 |
[백준] 14425번 - 문자열 집합 (python 파이썬) (0) | 2022.08.15 |