suheang

[백준] | JAVA, 자바 | 1408번 - 24 본문

알고리즘

[백준] | JAVA, 자바 | 1408번 - 24

suheang 2024. 4. 14. 21:16

https://www.acmicpc.net/problem/1408

 

1408번: 24

도현이는 Counter Terror Unit (CTU)에서 일하는 특수요원이다. 도현이는 모든 사건을 정확하게 24시간이 되는 순간 해결하는 것으로 유명하다. 도현이는 1시간 만에 범인을 잡을 수 있어도 잡지 않는

www.acmicpc.net


문제 요약 :

무를 시작한지 정확하게 24시간이 되는 순간에 잡으려고 한다.

만약 지금 시간이 13:52:30이고, 임무를 시작한 시간이 14:00:00 이라면 도현이에게 남은시간은 00:07:30 이다.

모든 시간은 00:00:00 ~ 23:59:59로 표현할 수 있다. 입력과 출력에 주어지는 모든 시간은 XX:XX:XX 형태이며, 숫자가 2자리가 아닐 경우에는 0으로 채운다.

도현이가 임무를 시작한 시간과, 현재 시간이 주어졌을 때, 남은 시간을 구하는 프로그램을 작성

 

( 첫째 줄에 임무를 수행하는데 남은 시간을 문제에서 주어지는 시간의 형태 (XX:XX:XX)에 맞춰 출력 )


문제 풀이 :

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String nowTime = br.readLine();
        String startTime = br.readLine();

        String[] nowTimes = nowTime.split(":");
        String[] startTimes = startTime.split(":");

        int nowHours = Integer.parseInt(nowTimes[0]);
        int nowMinutes = Integer.parseInt(nowTimes[1]);
        int nowSeconds = Integer.parseInt(nowTimes[2]);

        int startHours = Integer.parseInt(startTimes[0]);
        int startMinutes = Integer.parseInt(startTimes[1]);
        int startSeconds = Integer.parseInt(startTimes[2]);

        int remainSeconds = startSeconds - nowSeconds;
        int remainMinutes = startMinutes - nowMinutes;
        int remainHours = startHours - nowHours;

        if (remainSeconds < 0) {
            remainSeconds += 60;
            remainMinutes--;
        }
        if (remainMinutes < 0) {
            remainMinutes += 60;
            remainHours--;
        }
        if (remainHours < 0) {
            remainHours += 24;
        }

        System.out.printf("%02d:%02d:%02d", remainHours, remainMinutes, remainSeconds);
    }
}

 

1. 현재 시간과 임무를 시작한 시간 입력받기

2. ":" 을 기준으로 시간, 분, 초를 나눠서 저장

3. 현재 시간과 임무를 시작한 시간의 시, 분, 초를 저장할 변수를 생성하고 변수에 그 값을 저장

4. 임무를 시작한 시간에서 현재 시간을 빼줌

5. 만약 뺀 시간이 음수라면 분과 초는 그 수에 60을 더하고 해당하는 시간과 분을 -1 해준다. 시간은 24시간을 더해준다.

6. 계산된 시간 출력