알고리즘 풀이/SWEA

[SWEA][JAVA] 11592. 크루즈 컨트롤

배게 2021. 6. 14. 16:25
728x90

말이 2마리인 경우는 늦게 도착하는 말만 생각해서 문제를 해결하면 된다

 

결국 가장 늦게 도착하는 말과 문제에서 요구하는 xkm/h의 속력으로 이동하는 크루즈가 종로까지 동시에 도착할 때의

 

x값을 구해주면 되는 문제임

 

소수점때문에 거리도 double형으로 통일해주고

 

변수D의 값 10^9까지 double이 허용해주나 안해주나 헷갈려서 한번 넣어봤는데 한번에 됏음

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
 
 
class Solution {
        
    private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    
    public static void main(String[] args) throws IOException {
        
        int TC = Integer.parseInt(br.readLine());
        for(int i=0; i<TC; i++) {
            // Dkm : 종로까지의 거리 : , N : 종로 거리 위 말 마리수
            
            String[] input_DN = br.readLine().split(" ");
            double D=Double.parseDouble(input_DN[0]);
            int N=Integer.parseInt(input_DN[1]);
//            System.out.println(D + " "+N);
            
            double lateArrivalsTime = 0;
            
            for(int j=0; j<N; j++) {
                // Kkm : 종로 거리 위 현재 말의 위치, Skm/h : 현재 말의 속도
                String[] input_KS = br.readLine().split(" ");
                double K=Double.parseDouble(input_KS[0]);
                double S=Double.parseDouble(input_KS[1]);
                
                double arrivalsTime = (D-K)/S ;
                if(arrivalsTime>lateArrivalsTime) lateArrivalsTime = arrivalsTime;
                
            }
            
//            System.out.println(lateArrivalsTime);
            System.out.println("#"+(i+1)+" "+D/lateArrivalsTime);
            
            
            
        }
        
        
        
    }
}
cs