백준 1358. 하키
풀이
① 왼쪽 반원에 포함될 때 카운트
② 가운데 직사각형에 포함될 때 카운트
③ 오른쪽 반원에 포함될 때 카운트
반원에 포함될 때 풀이는 (a,b)에서 원의 중심까지의 거리 <= 반지름의 길이 이어야 한다.
즉, 이 문제에선 두 점 사이의 거리 공식이 들어갔다.
이것을 소스코드로 나타내면
#include <stdio.h>
int main(void)
{
int W, H, X, Y, P;
int count = 0;
scanf("%d %d %d %d %d", &W, &H, &X, &Y, &P);
while (P--)
{
int a, b;
scanf("%d %d", &a, &b);
if ((a - X)*(a - X) + (b - (Y + H / 2))*(b - (Y + H / 2)) <= (H / 2)*(H / 2) && a < X)
count++;
else if (X <= a&&a <= X + W&&Y <= b&&b <= Y + H)
count++;
else if ((a - (X + W))*(a - (W + X)) + (b - (Y + H / 2))*(b - (Y + H / 2)) <= (H / 2)*(H / 2) && X + W < a)
count++;
}
printf("%d", count);
return 0;
}
'알고리즘' 카테고리의 다른 글
[Algorithm] 2589. 보물섬 (0) | 2022.04.13 |
---|---|
순열 (Permutation) 알고리즘의 모든 것 (0) | 2020.05.14 |
[개념] 유클리드기하학,택시기하학 / Boj 3053. 택시 기하학 (0) | 2020.01.28 |
[개념] 플로이드 와샬 (Floyd Warshall) / 백준 11404 (0) | 2020.01.27 |
[개념] Bit연산 (0) | 2020.01.18 |