공부하기/백준

[Java] 백준 풀기 1408 - 24

XEV 2023. 12. 2. 23:41

자바 백준 1408번

브론즈 2

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

 

1408번: 24

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

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 수학, 구현, 사칙연산

 

 

 

 

 

코드 보기

import java.util.Scanner;


public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 현재 시간과 임무 시작 시간 입력 받기
        String currentTimeStr = sc.next();
        String missionStartTimeStr = sc.next();
        
        // 남은 시간 계산 함수 호출
        String remainingTime = calculateRemainingTime(currentTimeStr, missionStartTimeStr);
        
        // 남은 시간 출력
        System.out.println(remainingTime);
    }
    
    // 남은 시간 계산하는 함수
    public static String calculateRemainingTime(String currentTimeStr, String missionStartTimeStr) {
        // 문자열 시간을 초로 변환
        int currentTimeInSeconds = convertStringToSeconds(currentTimeStr);
        int missionStartTimeInSeconds = convertStringToSeconds(missionStartTimeStr);
        
        // 남은 시간 계산
        int remainingSeconds;
        if (currentTimeInSeconds <= missionStartTimeInSeconds) {
            remainingSeconds = missionStartTimeInSeconds - currentTimeInSeconds;
        } else {
            remainingSeconds = 24 * 3600 - (currentTimeInSeconds - missionStartTimeInSeconds);
        }
        
        // 시, 분, 초로 변환하여 형식에 맞게 반환
        int remainingHours = remainingSeconds / 3600;
        remainingSeconds %= 3600;
        int remainingMinutes = remainingSeconds / 60;
        int remainingSecs = remainingSeconds % 60;
        
        return String.format("%02d:%02d:%02d", remainingHours, remainingMinutes, remainingSecs);
    }
    
    // 문자열 시간을 초로 변환하는 함수
    public static int convertStringToSeconds(String timeStr) {
        String[] timeParts = timeStr.split(":");
        
        int hours = Integer.parseInt(timeParts[0]);
        int minutes = Integer.parseInt(timeParts[1]);
        int seconds = Integer.parseInt(timeParts[2]);
        
        return hours * 3600 + minutes * 60 + seconds;
    }
    
}