💡문제 분석 요약
IIHF는 같은 팀이 링크안에 너무 많으면 알람이 울리는 시스템을 설치해달라고 요청했다. 시스템은 다음과 같이 3개의 부분으로 이루어진다.
- 디지털카메라가 링크의 사진을 매 1초마다 찍는다.
- 디지털카메라가 찍은 사진에서 각 선수의 위치를 뽑아낸다.
- 하키 링크 안에 같은 팀 선수가 총 몇 명인지 계산한다.
하키 링크는 (X, Y)가 가장 왼쪽 아래 모서리인 W * H 크기의 직사각형과, 반지름이 H/2이면서 중심이 (X, Y+R), (X+W, Y+R)에 있는 두 개의 원으로 이루어져 있다. 아래 그림을 참고한다.
선수들의 위치가 주어질 때, 링크 안 또는 경계에 있는 선수가 총 몇 명인지 구하는 프로그램을 작성하시오.
💡알고리즘 설계
- 사각형 내부인지 확인
- 반원 내부인지 확인
💡코드
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
continue
radius = H/2
# 반원 안 인지
if ((x-X)**2+(y-(Y+radius))**2)**0.5<=radius:
count+=1
elif ((x-(X+W))**2+(y-(Y+radius))**2)**0.5<=radius:
count+=1
print(count)
💡 느낀점 or 기억할 정보
수학 공식을 이용해 반지름을 계산했다.
'알고리즘 문제 풀이' 카테고리의 다른 글
[백준 1337] 올바른 배열 - python (0) | 2025.01.11 |
---|---|
[백준 26069] 붙임성 좋은 총총이 - python (0) | 2025.01.10 |
[백준 10546] 배부른 마라토너 - python (0) | 2025.01.08 |
[백준 15624] 피보나치 수 7 - python, js (0) | 2025.01.07 |
[백준 16173] 점프왕 쩰리 (Small) - python (0) | 2025.01.06 |