[C++] baekjoon 1408

oat·2024년 2월 18일

everydayBOJ

목록 보기
23/51

Day 23

1408

문제

code

#include<iostream>
#include<string>

using namespace std;

string timeNow;
string startTime;

int main() {
    cin >> timeNow;
    cin >> startTime;

    int hourNow = stoi(timeNow.substr(0, 2));
    int minNow = stoi(timeNow.substr(3, 2));
    int secNow = stoi(timeNow.substr(6, 2));

    int startHour = stoi(startTime.substr(0, 2));
    int startMin = stoi(startTime.substr(3, 2));
    int startSec = stoi(startTime.substr(6, 2));

    if (hourNow == startHour && minNow == startMin && secNow == startSec) {
        cout << "00:00:00" << endl;  // 시작 시간과 현재 시간이 같은 경우
    }
    else {
        int ansSec = startSec - secNow;

        if (ansSec < 0) {
            ansSec += 60;
            startMin--;
        }

        int ansMin = startMin - minNow;

        if (ansMin < 0) {
            ansMin += 60;
            startHour--;
        }

        int ansHour = startHour - hourNow;

        if (ansHour < 0) {
            ansHour += 24;
        }

        cout.width(2);
        cout.fill('0');
        cout << ansHour << ":";

        cout.width(2);
        cout.fill('0');
        cout << ansMin << ":";

        cout.width(2);
        cout.fill('0');
        cout << ansSec << endl;
    }

    return 0;
}

풀이 과정

한번에 시간을 입력받아 substr로 시, 분, 초를 나누고,
그 수를 stoi를 사용해 int형으로 바꾸어 시간의 차를 계산하였다
if문으로 받아올림이 필요한 경우를 처리하였으며
cout.width로 두자리 수를 고정하고, 한 자리 수일 때 0을 채워넣도록 하였다

0개의 댓글