A는 10시에 출발하여 40km/h의 속도로 이동
B는 11시에 출발하여 60km/h의 속도로 이동
몇시에 만나는가?
package algo;
public class MeetingTimeLCM {
//A는 10시에 출발하여 40km/h의 속도로 이동
//B는 11시에 출발하여 60km/h의 속도로 이동
//몇시에 만나는가?
//B가 11시에 출발했을때는 A는 40km까지 감
public static void main(String[] args) {
// A의 정보
int speedA = 40; // A의 속도 (km/h)
int startTimeA = 10; // A의 출발 시간 (10시)
// B의 정보
int speedB = 60; // B의 속도 (km/h)
int startTimeB = 11; // B의 출발 시간 (11시)
// A가 B보다 먼저 출발하여 이동한 시간
int timeDifference = startTimeB - startTimeA; // 1시간
// A의 초기 이동 거리
int distanceA = speedA * timeDifference; // A가 B 출발 전에 이동한 거리
// 두 속도의 최소공배수를 구함
int lcm = lcm(speedA, speedB);
// A와 B가 만나는 데 걸리는 시간
double meetingTime = (double) lcm / speedB; // B의 속도로 만나는 시간
// A의 출발 시간에 B가 출발한 후 걸리는 시간을 더함
meetingTime += startTimeB; // B의 출발 시간 + 만나는 시간
System.out.printf("A와 B는 %.1f시에 만납니다.%n", meetingTime);
}
// 최대공약수를 구하는 메서드
public static int gcd(int a, int b) {
while (b != 0) {
int c = b;
b = a % b;
a = c;
}
return a;
}
// 최소공배수를 구하는 메서드
public static int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
}
A와 B는 13.0시에 만납니다.
Share article