[백준] 1358번 하키

거북이·2023년 1월 17일
0

백준[실버4]

목록 보기
67/91
post-thumbnail

💡문제접근

  • 사각형 영역 내에 있는 경우와 왼쪽 반원 영역에 있는 경우, 그리고 오른쪽 반원 영역에 있는 경우를 나누어 선수의 좌표 x, y가 그 영역 내에 존재한다면 1만큼 증가해주었다.

💡코드(메모리 : 32540KB, 시간 : 40ms)

import math

W, H, X, Y, P = map(int, input().split())
count = 0
for _ in range(P):
    x, y = map(int, input().split())
    if (X <= x <= X + W) and (Y <= y <= Y + H):
        count += 1
    else:
        left_semicircle_distance = math.sqrt((X - x)**2 + (Y + H/2 - y)**2)
        right_semircircle_distance = math.sqrt((x - (X + W))**2 + (y - (Y + H/2))**2)
        if left_semicircle_distance <= H/2:
            count += 1
        elif right_semircircle_distance <= H/2:
            count += 1
print(count)

💡소요시간 : 18m

0개의 댓글