이 문제에서는 기차의 길이(L)와 속도(S), 그리고 기차가 다리를 통과하는 데 걸린 시간(T)이 주어집니다. 우리의 목표는 C++을 사용하여 이 정보들로부터 다리의 길이를 계산하는 프로그램을 작성하는 것입니다.
문제 설명
기차의 속도, 다리를 건너는 데 걸린 시간, 그리고 기차의 길이를 이용하여 다리의 길이를 구해야 합니다.
예시를 통해 문제를 이해해 보겠습니다.
입력: L = 310m, S = 45m/sec, T = 12sec
출력: 230m
풀이 접근 방법
기차가 다리를 완전히 통과하는 동안 이동한 거리는 기차가 다리에 진입하는 순간부터 기차의 마지막 칸이 다리를 벗어나는 순간까지입니다. 따라서 이동 거리는 기차의 길이(L) + 다리의 길이(B)가 됩니다.
이를 수식으로 표현하면 다음과 같습니다.
S × T = L + B
여기서 다리의 길이(B)를 구하면,
B = S × T − L
구현 예제
#include <iostream>
using namespace std;
int findBridgeLength(int L, int S, int T) {
int B = (S * T) - L;
return B;
}
int main() {
int L = 150, S = 45, T = 25;
cout << "다리의 길이는 " << findBridgeLength(L, S, T);
return 0;
}실행 결과
다리의 길이는 975
코드 설명
위 코드에서 findBridgeLength 함수는 기차의 길이(L), 속도(S), 통과 시간(T)을 매개변수로 받습니다. 함수 내부에서는 공식 B = S × T − L을 적용하여 다리의 길이를 계산한 뒤 반환합니다.
예제 입력에서 기차의 길이가 150m이고, 초속 45m로 25초 동안 이동했으므로 총 이동 거리는 45 × 25 = 1125m입니다. 여기서 기차의 길이 150m를 빼면 다리의 길이인 975m가 도출됩니다.
시간 복잡도
이 알고리즘은 단순한 산술 연산만 수행하므로 시간 복잡도는 O(1)이며, 추가 메모리 사용 없이 상수 시간 안에 결과를 얻을 수 있습니다.