[백준 13655] Guarda Costeira (C#, C++) - soo:bak
작성일 :
문제 링크
설명
도망선은 해안에서 수직으로 12해리를 이동합니다. 해안경비정은 도망선과 수평으로 D해리 떨어진 지점에서 출발해 대각선으로 직진합니다.
두 배가 동시에 출발할 때 경비정이 12해리 경계선 전에 도망선을 잡을 수 있는지 판단하는 문제입니다.
접근법
먼저, 도망선이 12해리를 이동하는 시간과 경비정이 대각선 거리를 이동하는 시간을 비교합니다. 경비정의 이동 거리는 직각삼각형의 빗변이므로 12²+D²의 제곱근입니다.
다음으로, 부동소수점 오차를 피하기 위해 제곱 비교를 사용합니다. 경비정 시간이 도망선 시간 이하이면 잡을 수 있으므로 S, 아니면 N을 출력합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
namespace Solution {
class Program {
static void Main(string[] args) {
var line = "";
while ((line = Console.ReadLine()) != null) {
var p = line.Split();
var D = int.Parse(p[0]);
var VF = int.Parse(p[1]);
var VG = int.Parse(p[2]);
var lhs = (12 * 12 + D * D) * VF * VF;
var rhs = 12 * 12 * VG * VG;
Console.WriteLine(lhs <= rhs ? "S" : "N");
}
}
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int D, VF, VG;
while (cin >> D >> VF >> VG) {
int lhs = (12 * 12 + D * D) * VF * VF;
int rhs = 12 * 12 * VG * VG;
cout << (lhs <= rhs ? "S" : "N") << "\n";
}
return 0;
}