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 {
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" ) ;
}
}