[알고리즘] 8.둘은 몇시에 만나는가?

손영민's avatar
Mar 03, 2025
[알고리즘] 8.둘은 몇시에 만나는가?
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

sson17