본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 8574 : Ratownik

반응형

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

 

8574번: Ratownik

W pierwszym wierszu standardowego wejścia znajdują się liczby całkowite: $n$, $k$, $x$, $y$ ($1 ≤ n, k ≤ 100\,000$, $0 ≤ x, y ≤ 10\,000$) oznaczające kolejno: liczbę dzieci, zasięg wzroku ratownika oraz jego położenie. W następnych $n$ 

www.acmicpc.net

번역기에 함정이 있었던(?) 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

어린이의 수 n, 안전하지 않은 어린이 수 unSafeCnt, 구조요원의 시야 k, 위치들 x,y,x2,y2를 선언 후 적절히 입력해줍니다.

📔 풀이과정

매 어린이의 좌표를 입력받는 for loop를 수행합니다.

 1. 좌표간의 거리공식을 적용합니다.

 2. data유실이 없어야 하므로 double형으로 변수 dist를 선언해 저장합니다.

 3. dist > k라면 unSafeCnt++해줍니다. 

* 구글 번역기에는 k시야 이상부터 구조원이 못본다고 나옵니다. 이는 100%에서 틀리는 짜릿함을 맛보게 됩니다.

📔 정답출력

unSafeCnt를 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int n, unSafeCnt;
double k, x, y, x2, y2;
int main(){
    cin >> n >> k >> x >> y;
    for(int i = 0; i < n; i++){
        cin >> x2 >> y2;
        double dist = sqrt(pow(x2 - x, 2) + pow(y2 - y, 2));
        if(dist > k) unSafeCnt++;
    }
    cout << unSafeCnt;
}