반응형
<코드>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
double X, Y, D, T, ans;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> X >> Y >> D >> T;
double d = sqrt(pow(X, 2) + pow(Y, 2));
cout << fixed;
cout.precision(9);
if (D < T) // 점프하는것보다 걷는게 더 빠를 때
{
cout << d << '\n';
}
else
{
ans = d;
int jump = d / D; // 점프 횟수
d -= jump * D; // 남은 거리
if (jump == 0) ans = min(ans, min(T + D - d, 2.0 * T));
else ans = min(ans, min(jump * T + d, (jump + 1.0) * T));
cout << ans << '\n';
}
}
풀이 방법
점프 횟수가 0이라면 걸어가는 것, 한번 점프 후 걸어가는 것, 2번 점프하는 것 중 작은 값을 고른다.
점프 횟수가 0이 아니라면 점프 후 걸어가는 것과 한번 더 점프하는 것 중 작은 값을 고른다.
반례 예시)
3 4 3 1
ANS : 2
10 10 20 1
ANS : 2
반응형
'🧩PS > 🥈Nomal' 카테고리의 다른 글
[C/C++] 백준 11052번 - 카드 구매하기 (0) | 2021.03.22 |
---|---|
[C/C++] 백준 11727번 - 2×n 타일링 2 (DP) (0) | 2021.03.22 |
[C/C++] 백준 11724번 - 연결 요소의 개수 (0) | 2021.03.22 |
[C/C++] 백준 2482번 - 색상환 (0) | 2021.03.22 |
[C/C++] 백준 11758번 - CCW (0) | 2021.03.22 |