반응형
이번 문제는 직사각형, 원의 공식만 알면 쉬운 문제입니다.
위 하키장 그림 안에 선수가 있나 없나를 계산하는 문제로 저같은 경우 직사각형에 있는지 검사하고 없으면 반원에 있는지 확인해주었습니다. 직사각형이야 좌표로 계산해주었고 반원같은 경우 원의 내부의 점을 판별하는 공식을 이용했습니다.
위 그림 출처 : https://wjs7347.tistory.com/18
걸쳐있어도 되기 때문에 <= 으로 바꿔서 조건을 검사해주었습니다.
다음과 같은 코드를 통해 통과하였습니다.
import sys
input = sys.stdin.readline
W, H, X, Y, P = map(int, input().split())
check_people = 0
for i in range(P):
x, y = map(int, input().split())
radius = H/2
distance1 = ((x-X)**2 + (y-(Y+radius))**2)
distance2 = ((x-(X+W))**2 + (y-(Y+radius))**2)
radius_2 = radius*radius
if (X+W) >= x and x >= X and y >= Y and y <= (Y+H): # 사각형
check_people += 1
elif distance1 <= radius_2 or distance2 <= radius_2: # 반원
check_people += 1
print(check_people)
**2 이 제곱을 나타내는 것을 알고 있으면 좋을 거 같습니다.
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘/백준] 2615번 오목 Python 파이썬 (0) | 2023.03.12 |
---|---|
[알고리즘/백준] 1485번 정사각형 Python 파이썬 (0) | 2023.03.10 |
[알고리즘/백준] 1326번 폴짝폴짝 Python 파이썬 (0) | 2023.03.06 |
[알고리즘/백준] 2777번 숫자 놀이 Python 파이썬 (0) | 2023.03.04 |
[알고리즘/백준] 2621번 카드게임 Python 파이썬 (0) | 2023.02.26 |
댓글