본문 바로가기

백준 문제풀이 코드저장소/Gold

Baekjoon 1069. 집으로 / Pyhton

728x90

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

알고리즘 설명

문제 설명

점프와 걷기를 이용해서 주어진 위치에서 원점으로 돌아가는데 필요한 최소 시간을 구하는 문제

코드 설명

  1. 걷기만 하는 경우
  2. 점프를 한 후에 걷는 경우
  3. 뒤로 조금 걸어간 후 점프를 하는 경우 -> 점프가 효율적이어서 점프 칸 수를 맞추기 위한 뒷걸음
import math

# 입력 받기
x, y, d, t = map(int, input().split())

# 유클리드 거리 계산
dist = (x ** 2 + y ** 2) ** 0.5

# 점프 횟수 계산
jump = dist // d

# 점프를 포함한 최단 시간 계산
if dist >= d:
    tmp1 = t * jump + (dist - (d * jump))
    tmp2 = t * (jump + 1)
else:
    tmp1 = t + (d - dist)
    tmp2 = t * 2
# 걷기만 하는 경우
tmp3 = dist

print(f"{min(tmp1, tmp2, tmp3):.9f}")
반응형