본문 바로가기

Algorithm/Baekjoon BOJ

[백준][C++] 1358 : 하키

반응형

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

 

1358번: 하키

첫째 줄에 수 W H X Y P가 주어진다. P는 선수의 수이다. W와 H는 100보다 작거나 같은 자연수이고, H는 짝수이다. X와 Y는 절댓값이 100보다 작거나 같은 정수이다. P는 최대 50인 자연수이다. 둘째 줄부

www.acmicpc.net

 

 

 

 


- 문제

 

  하키장 모양의 도형의 x,y 좌표가 주어질 때 하키장 내부에 하키 선수들이 몇명 있는지 구하는 문제다.

 

 


- 해설

 

 1. 중앙의 네모 안에 하키 선수가 있을 경우

 

 2. 좌측 동그라미에 하키 선수가 있을 경우

 

 3. 우측 동그라미에 하키 선수가 있을 경우

 

이렇게 세가지 경우를 구하면 된다.

 

 


- 풀이

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int W, H, X, Y, P, tempx, tempy, answer = 0;

    cin >> W >> H >> X >> Y >> P;

    for (int i = 0; i < P; i++)
    {
        cin >> tempx >> tempy;
        if (tempy >= Y && tempy <= Y + H)
        {
            if (tempx >= X && tempx <= X + W)
            {
                answer++;
            }
            else if (pow(X - tempx, 2) + pow((Y + H / 2) - tempy, 2) <= pow(H / 2, 2))
            {
                answer++;
            }
            else if (pow(X + W - tempx, 2) + pow((Y + H / 2) - tempy, 2) <= pow(H / 2, 2))
            {
                answer++;
            }
        }
    }
    cout << answer;
    return 0;
}

 


- 새롭게 알게 된 점

 

X

반응형