Coding Test/HackerRank

[HackerRank] Time Conversion c++

owls 2022. 7. 18. 13:30
728x90
  • Problem

Given a time in 12 -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.

  • Example

   - s = '12:01:00PM'

     Return '12:01:00'.

  - s = '12:01:00AM'

     Return '00:01:00'.

  • Constraints

All input times are valid

  • Sample Input
07:05:45PM
  • Sample Output
19:05:45
  • Solutions

문자열을 parsing 하여 문제를 접근하려고 했는데

파싱하지 않고 isdigit() 함수를 사용하여 숫자 검사하는 방법으로 문제를 풀었다.

파싱해서 검사하는것보다 숫자를 검사하는게 더 간단하게 문제를 풀 수 있었다.

string timeConversion(string s) {
    
    int time = 0;
    char ch;
    vector<int> vec;
    for(auto it : s){
        if(isdigit(it)){
            time = time * 10 + (it - 48);
        }
        else{
            vec.push_back(time);
            time = 0;
            if(it == 'A' || it == 'P'){
                ch = it;
                break;
            }   
        }
    }
    
    if(ch == 'P' && vec[0] < 12){
        vec[0] = vec[0] + 12;
     }
    else if(ch == 'A' && vec[0] == 12){
        vec[0] = 0;
    }
    
    string res("");
    for(auto &it : vec){
        string tmp("");
      if(it < 10){
          tmp = "0"+to_string(it);
      }
      else{
          tmp = to_string(it);
      }
      res +=  tmp + ":";
    }
    
    res = res.erase(res.size()-1);
    
    return res;
}

hackerrnak warmup solution

728x90