dh-winternagi 님의 블로그
(1069) 집으로 본문
https://www.acmicpc.net/problem/1069
단계별로 풀어보기
39단계(기하 2) 10번째
점프가 더 느리다면(T>D) 걷는 것만 생각하면 된다.
아니라면 최대한 점프하다가 남은 거리가 점프 거리보다 작아졌을 때 세 가지 방법 중 최소를 고려하면 된다.
1) 남은 거리를 전부 걸어가기
2) 직각삼각형 형태로 점프를 한 뒤 남은 거리는 걸어가기
3) 이등변삼각형 형태로 점프 두 번 하기 (이미 점프한 적이 있다면 이전 점프까지 고려해 점프를 한 번만 더 하면 된다)

#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int main() {
cout<<fixed;
cout.precision(9);
int x, y, d, t;
cin >> x >> y >> d >> t;
double r= sqrt(x*x+y*y), ans= 0;
if(t>d){
ans= r;
}else{
while(true){
if(r<d) break;
r-= d;
ans+= t;
}
if(ans<0.01){
ans+= min({2.0*t, r, t+abs(d-r)});
}else{
ans+= min({1.0*t, r, t+abs(d-r)});
}
}
cout << ans;
return 0;
}'백준 (C++) > Solve' 카테고리의 다른 글
| (1311) 할 일 정하기 1 (0) | 2026.04.22 |
|---|---|
| (11723) 집합 (0) | 2026.04.22 |
| (7869) 두 원 (0) | 2026.04.22 |
| (1688) 지민이의 테러 (0) | 2026.04.22 |
| (2162) 선분 그룹 (0) | 2026.04.22 |
