[Softeer/C++] 근무 시간
첫번째 풀이
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main(int argc, char** argv){
int Total=0;
for(int i=0; i<5; i++){
string time, startTime, endTime;
getline(cin, time);
stringstream ss(time);
getline(ss, startTime, ' ');
getline(ss, endTime);
string startHour, startMinute, endHour, endMinute;
stringstream ssStart(startTime);
getline(ssStart, startHour, ':');
getline(ssStart, startMinute);
int SH, StartTotalM;
SH=stoi(startHour);
StartTotalM=(SH*60)+stoi(startMinute);
stringstream ssEnd(endTime);
getline(ssEnd, endHour, ':');
getline(ssEnd, endMinute);
int EH, EndTotalM;
EH=stoi(endHour);
EndTotalM=(EH*60)+stoi(endMinute);
Total+=EndTotalM-StartTotalM;
}
cout << Total;
return 0;
}
답은 맞지만 중복되고 불필요한 코드가 많은 것 같다.
좀 더 간단하게 풀 수 있는 방법이 있을 것 같아 다시 풀어봤다.
두번째 풀이
#include<iostream>
#include<string>
using namespace std;
int main(int argc, char** argv){
int Total=0;
for(int i=0; i<5; i++){
string time;
getline(cin, time);
string startHour = time.substr(0,2);
string startMinute = time.substr(3,2);
string endHour = time.substr(6,2);
string endMinute = time.substr(9,2);
int TotalStartMin = stoi(startHour)*60 + stoi(startMinute);
int TotalEndMin = stoi(endHour)*60 + stoi(endMinute);
Total += TotalEndMin - TotalStartMin;
}
cout << Total;
return 0;
}
처음 풀었을 때 보다 단순하게 접근해서 풀어봤다.
출처: Softeer, https://softeer.ai/practice/6254