20200810 // 삼성 SW Expert 아카데미 문제 // 6019

2020. 8. 10. 15:20Programming/SW Expert Academy

삼성 SW Expert 아카데미 6019번 "기차 사이의 파리" 문제입니다.

TC = int(input())   
ans = []
for tc in range(1, TC + 1):
    k = "#"+str(tc) + " "
    D, A, B, F = map(int, input().split())
    k += str(float(D*F/(A+B)))
    ans.append(k)
for e in ans:
    print(e)

유명한 폰 노이만의 파리 문제다. 폰 노이만의 파리 문제는 두 기차의 속력이 같았지만 이번 문제는 두 기차의 속력이

 

다르다. 문제에서 구하라고 한 것은 파리가 움직인 거리다. 거리 = 속력 * 시간 이고 파리의 속력은 주어졌으니 문제는

 

시간이다. 파리가 죽기 전까지 이동하는데에 걸린 시간은 얼마일까? 간단하다. 두 기차가 만날 때까지 걸린 시간을

 

구하면 된다. 두 기차가 만나야 파리가 죽기 때문이다. 두 기차 사이의 거리가 D 라고 하고 두 기차의 속력이 각각

 

A, B일 경우 두 기차가 만날 때까지 걸린 시간은 거리/속력 = D/(A+B) 로 구할 수 있다. 그 시간에 파리의 속력 F를 곱하

 

면 파리가 움직인 거리를 구할 수 있다. 따라서 구하는 값은 D/(A+B) * F 다.