Given a time in -hour AM/PM format, convert it to military (24-hour) time.
Note: - 12:00:00AM on a 12-hour clock is 00:00:00 on a 24-hour clock.
am일때와 pm일때로 나눈 후, 12시일 때를 조사해서 저장했다.
/*
* Complete the 'timeConversion' function below.
*
* The function is expected to return a STRING.
* The function accepts STRING s as parameter.
*/
string timeConversion(string s) {
string ret="",hour="";
//if AM
if(s[s.size()-2] == 'A'){
hour=hour+s[0]+s[1];
//check if hour is 12
if(hour=="12"){
ret+="00";
for(int i =2;i<s.size()-2;i++){
ret+=s[i];
}
}
//else same as s
else {
for(int i=0;i<s.size()-2;i++){
ret+=s[i];
}
}
}
//if PM
else{
hour=hour+s[0]+s[1];
//check if hour is 12
if(hour=="12"){
for(int i=0;i<s.size()-2;i++){
ret+=s[i];
}
}
else {
int iHour=0;
char fDigit=s[0];
iHour += (fDigit-'0')*10;
fDigit=s[1];
iHour +=fDigit-'0';
iHour+=12;
ret+=(iHour/10)+'0';
ret+=(iHour%10)+'0';
for(int i =2;i<s.size()-2;i++){
ret+=s[i];
}
}
}
return ret;
}
using namespace std;
int main() {
string s;
cin >> s;
int n = s.length();
int hh, mm, ss;
hh = (s[0] - '0') * 10 + (s[1] - '0');
mm = (s[3] - '0') * 10 + (s[4] - '0');
ss = (s[6] - '0') * 10 + (s[7] - '0');
if (hh < 12 && s[8] == 'P') hh += 12;
if (hh == 12 && s[8] == 'A') hh = 0;
printf("%02d:%02d:%02d\n", hh, mm, ss);
return 0;
}
문제에 올라와 있는풀이이다.
굳이 나처럼 am인지 pm인지 조사하며 조건문을 세우지않고,
시간 분 초만 저장 후, 단 두개의 조건문으로 12시와 am,pm을 조사했다...
훨씬 간단한 풀이이다.