2019-10-18

12시간제를 24시간제로 시간증가하여 변환

12시간제를 24시간제로 시간증가하여 변환

목표

자연수 N을 오름차순과 내림차순으로 각각 정렬하여 두 값을 합산한 결과를 반환하시요

조건

  • time의 값은 오전과 오후가 각각 “AM”, “PM” 으로 표시하며 12시간제로 “시:분:초” 의 형태를 가짐
  • 시분초는 한자리 수라도 두자리로 표시
  • N <= 200,000

예시

time n result
AM 12:01:00 1 00:01:01
PM 12:01:00 2 12:01:02
PM 09:01:40 50 21:02:10
AM 11:01:00 3700 00:02:40

코드

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Solution {
    //p = 시간 , n = 증가할 sec
 public String solution(String time, int n) throws IllegalArgumentException {

  String answer = null;
        Matcher matcher = Pattern.compile("(\\w+) (\\d+):(\\d+):(\\d+)").matcher(time);
        
        if(matcher.find()){
            boolean isPm = matcher.group(1).toUpperCase().equals("PM");
            int hour = Integer.parseInt(matcher.group(2));
            int min = Integer.parseInt(matcher.group(3));
            int sec = Integer.parseInt(matcher.group(4)) + n;
            
            min += sec/60;
            sec %= 60;
            
            hour += min/60;
            min %= 60;
            
            if(isPm && hour!=12){
                hour += 12;
                if(hour > 24){
                    hour %= 24;
                }
            }
            if(!isPm && hour==12){
                hour -= 12;
            }
            
            answer = String.format("%02d:%02d:%02d",hour,min,sec);
      return answer;
        }
        
        throw new IllegalArgumentException("time format is illegal");
 }
}

0 개의 댓글:

댓글 쓰기