문제
철수는 총과 함께 과녁을 향해 초속 A미터로 달리고 있다. 달리는 도중에 철수는 (자신을 기준으로) 초속 B미터로 나가는 총알을 과녁 방향으로 발사 했다. 이 때, 총알은 과녁을 향해 초속 몇 미터로 날아가고 있는가?
조건 및 입출력
1. 첫째 줄에 두 실수 A, B가 공백으로 구분되어 소숫점 둘째자리까지 주어진다. (0 < A, B ≤ 108)
2. 총알은 과녁을 향해 초속 몇 미터로 날아가고 있는지를 출력하여라.
3. 출력과 정답의 절대 혹은 상대 오차가 10-9이하일 경우, 정답으로 판단한다.
코드
# 입력부
cheolsu,bullet=map(float,input().split());
# 처리부
result=((cheolsu+bullet)/(1+((cheolsu*bullet)/(299792458)**2)));
# 출력부
print("%.2f"%result);
풀이 과정
대부분의 사람들은 고전역학에 입각해서 문제를 접근했을 것이다. 나 역시도 그랬다.
그냥 두 수의 합을 실수형으로 표현하면 되는거 아니야? 라고 생각했다가 맞왜틀을 외쳤을 것이다.
나도 이 문제를 한 동안 묶혀뒀다. 아무리 생각해도 두 수의 합이라고 생각했기 때문이다.
그러다 오늘 문득, 침대에서 뒹굴거리다 고등학교 때 물리 선생님이 했던 말씀이 떠올랐다.
"물리 I에서 배우는 상대속도는 고전역학을 적용해도 우리가 살아가는 자연계에서는 큰 무리가 없지만, 빛의 속도에 근접하면 고전 역학이 틀리게 된다."라는 말이 떠올랐고, 구글에 상대성이론의 상대속도를 검색 해 보았다.
그래서 로렌츠 변환을 적용한 상대성 이론에서의 상대 속도는 아래와 같다.

위 식을 구현해서 코드를 작성하면 정답이다.
여담

고전 역학에서 단순히 위 식을 떠올렸지만, 이 문제는 상대성이론을 적용한 상대속도를 구하는 문제였다.
C로 풀려고 했는데, 빛의 속력이 너무 커서 (약 299792458 m/s) 파이썬으로 풀었다.
하.. 악랄하다.
상대성이론으로 접근해서 푸는 문제였다니.... ㅋㅋ;;;;
| 코드가 이상하거나, 이해되지 않는 부분은 언제든 댓글 남겨주세요! + 더 좋은 풀이 방법이 있다면, 댓글로 알려주세요! :) |
'Programming > Python' 카테고리의 다른 글
| [백준] 1747번 : 소수&팰린드롬 (Python / 파이썬) (0) | 2023.01.18 |
|---|---|
| [백준] 11051번 : 이항 계수 2 (Python / 파이썬) (0) | 2023.01.17 |
| [백준] 10988번 : 팰린드롬인지 확인하기 (Python / 파이썬) (0) | 2023.01.12 |
| [백준] 11179번 : 2진수 뒤집기 (Python / 파이썬) (0) | 2023.01.10 |
| [백준] 14659번 : 한조서열정리하고옴ㅋㅋ (Python / 파이썬) (0) | 2023.01.07 |