본문 바로가기
코테 공부 🔥

[백준/파이썬] 1358: 하키

by 서니서닝 2024. 5. 27.
728x90

https://www.acmicpc.net/problem/1358

 

문제 요약 :

  • 하키 링크는 가로 길이가 W이고 세로 길이가 H인 직사각형과, 각 반지름이 H/2인 두 개의 원으로 이루어져 있음
  • 직사각형의 왼쪽 아래 모서리 좌표는 (X,Y)
  • 두 원의 중심은 각각 (X,Y+H/2)(X+W,Y+H/2)

 

 

예제 입력1 :

20 10 5 0 3
15 5
1 5
1 1

 

예제 출력 1:

2

 

📌 풀이  )

1. 직사각형 안에 있는지 확인한다.

2. 왼쪽 반원 안에 있는지 확인한다.

3. 오른쪽 반원 안에 있는지 확인한다.

def is_inside_rink(W, H, X, Y, a, b):
    # 직사각형
    if X <= a <= X + W and Y <= b <= Y + H:
        return 1
    # 왼쪽 반원
    left_circle_center = (X, Y + H / 2)
    if ((a - left_circle_center[0]) ** 2 + (b - left_circle_center[1]) ** 2) <= (H / 2) ** 2:
        return 1
    # 오른쪽 반원
    right_circle_center = (X + W, Y + H / 2)
    if ((a - right_circle_center[0]) ** 2 + (b - right_circle_center[1]) ** 2) <= (H / 2) ** 2:
        return 1
    return 0

W, H, X, Y, P = map(int, input().split())
result = 0

for _ in range(P):
    a, b = map(int, input().split())
    result += is_inside_rink(W, H, X, Y, a, b)

print(result)
728x90

댓글