기록하고 까먹지 말기

1358 본문

전공/백준

1358

yha97 2022. 9. 18. 11:37

날짜 : 2022. 09. 16

사용 언어 : python

 

문제

 

코드

import sys

w, h, x, y, p = map(int, sys.stdin.readline().split())

c1 = {'x' : x, 'y' : y+h/2}
c2 = {'x' : x+w, 'y' : y+h/2}

r = int((h / 2)**2)

cnt = 0

for i in range(p):
    p_x, p_y = map(int, sys.stdin.readline().split()) # 선수의 좌표
    d = (w/2)**2+(h/2)**2
    d1 = (c1['x']-p_x)**2 + (c1['y']-p_y)**2 # 선수-반원1의 거리
    d2 = (c2['x']-p_x)**2 + (c2['y']-p_y)**2 # 선수-반원2의 거리
    if (x <= p_x <= x+w) and (y <= p_y <= y+h):
        cnt += 1
        continue
        
    if d1 <= r or d2 <= r: # 반원 내부
        cnt += 1    
        
print(cnt)

 

알게된 점

- 반원사이의 거리는 쉽게 구했는데 직사각형 내부를 구하는 과정에서 너무 어렵게 생각한게 문제였다.

- 단순 4개 꼭지점을 토대로 범위에 따라 구하면 되는 거였는데 그걸 생각해내지 못한게 좀 아쉽다.

 

 

참고 사이트

 

'전공 > 백준' 카테고리의 다른 글

18870  (0) 2022.09.18
10814  (0) 2022.09.18
1004  (0) 2022.09.15
2477  (0) 2022.09.13
11478  (0) 2022.09.13