본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 1408 : 24

반응형

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

 

1408번: 24

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

www.acmicpc.net

구현문제였습니다.

📕 풀이방법

📔 입력 및 초기화

형식에 맞게 시작시간과 끝 시간을 입력받기 위한 배열 s, e를 선언해 시간, 분, 초를 입력받습니다.

📔 풀이과정

남은 시간을 string형태로 반환하는 getTimeLeft함수를 수행합니다.

시작시간과 끝 시간을 초로 환산해 저장합니다. 이 후 시간, 분, 초로 환산해 출력 형식에 맞게 지역변수 timeLeft를 선언 해 저장합니다.

* 24시인 경우 0시로 바꿔야합니다.

* 남은 시간이 10미만이라면 0을 정답 문자열에 더해줘야 합니다.

📔 정답출력

getTimeLfet결과를 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int s[3], e[3];

string getTimeLeft(){
    int startTime = 0, endTime = 0, hour, minute, sec;
    string timeLeft = "";
    
    startTime = s[0] * 3600 + s[1] * 60 + s[2];
    endTime = e[0] * 3600 + e[1] * 60 + e[2];

    if(startTime > endTime) endTime += 3600 * 24;
    sec = endTime - startTime;

    hour = sec / 3600;
    if(hour == 24) hour = 0;
    sec %= 3600;
    if(hour < 10) timeLeft += "0";
    timeLeft += to_string(hour) + ":";

    minute = sec / 60;
    if(minute < 10) timeLeft += "0";
    timeLeft += to_string(minute) + ":";
    sec %= 60;

    if(sec < 10) timeLeft += "0";
    timeLeft += to_string(sec);

    return timeLeft;
}

int main(){
    scanf("%d:%d:%d", &s[0], &s[1], &s[2]);
    scanf("%d:%d:%d", &e[0], &e[1], &e[2]);
    cout << getTimeLeft();
}