본문 바로가기
Beakjoon&프로그래머스/Java

[백준/Java] 4366번 Average Speed

by 현장 2026. 2. 8.

-Code

import java.io.*;
import java.util.*;

public class BOJ4366 {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
                new BufferedReader(new InputStreamReader(System.in));
        int lastTime = 0;
        int nowSpeed = 0;
        double totalDist = 0;

        while (true) {
            String line = br.readLine();
            // 입력이 없으면 탈출 
            if (line == null) {
                break;
            }
            // StringTokenizer 사용해 " "을 기준으로 분리
            StringTokenizer st = new StringTokenizer(line);
            int length = st.countTokens();
            String[] nowTime = st.nextToken().split(":");
            // 시간 분 초로 분리
            int hh = Integer.parseInt(nowTime[0]);
            int mm = Integer.parseInt(nowTime[1]);
            int ss = Integer.parseInt(nowTime[2]);
            // 지금 시간을 초로 바꾸기
            int nowTotalTime = hh * 3600 + mm * 60 + ss;
            // 마지막 시간과 현재 시간의 차 구하기
            double gapTime = nowTotalTime - lastTime;
            // 전체 거리 더하기
            totalDist += (gapTime / 3600) * nowSpeed;
            // 속도도 주어진 경우 속도 셋팅
            if (length == 2) {
                nowSpeed = Integer.parseInt(st.nextToken());
            } else {
                // 시간만 주어진 경우 출력
                System.out.println(String.format(
                        "%02d:%02d:%02d %.2f km",
                        hh, mm, ss, totalDist
                ));
            }
            // 마지막 시간 변경
            lastTime = nowTotalTime;
        }
    }
}