[HackerRank] TimeConversion

jh Seo·2024년 2월 4일
0

HackerRank

목록 보기
3/15

[HackerRank] TimeConversion

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.

  • 12:00:00PM on a 12-hour clock is 12: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을 조사했다...
훨씬 간단한 풀이이다.

레퍼런스

문제의 editorial 칸 링크

profile
코딩 창고!

0개의 댓글