-
HackerRank 1달 과정 1주차 3번 - Time Conversion개발 여정/코딩테스트 준비 2021. 12. 7. 01:23
AM, PM이 들어간 시간 String을
1. 오전, 오후에 맞춰 24시간대로 시간대를 변경하고 (00:00:00~23:59:59)
2. AM, PM을 떼어서 반환하여야 한다.
class Result { public static String timeConversion(String s) { // 파라미터 s를 ":"로 split한 배열을 만든다. (시, 분, 초) String[] str = s.split(":"); // 시간은 int형으로 변환한다. int hour = Integer.parseInt(str[0]); //시간대가 오후이고 12시 이전인 경우 if(str[2].contains("PM") && hour < 12){ hour += 12; // 12시간을 더한다. str[0] = Integer.toString(hour); // 다시 String으로 변환한다. } else if (str[2].contains("AM") && hour == 12){ //시간대가 오전이고 시간이 12시인 경우 (=자정인 경우) str[0] = "00"; } String answer = str[0] + ":" + str[1] + ":" + str[2].substring(0,2); return answer; } }
*포인트 함수: split(), parseInt(), toString(), contains(), subString()
사실 위 코드는 아주 원시적으로 푼 코드이다.
그래서 최근 비슷한 코딩테스트 문제에서 "초를 10초 더해서 반환하세요." 라는 문제가 나왔을 때 동공지진이 났다.
그렇게 하면 알고리즘이 더 복잡해지기 때문이다.
코딩테스트가 끝난 후 다시 저 문제를 방문해서 다른 사람의 풀이를 봤는데..아하..
그동안 지겹게 써왔던 SimpleDateFormat을 쓰면 될 것을^^...
그동안 sdf로 Date 형식 변형하는 것만 해와서 Time에도 적용할 생각을 하지 못했다.
SimpleDateFormat을 활용한 풀이
import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java.util.function.*; import java.util.regex.*; import java.util.stream.*; import static java.util.stream.Collectors.joining; import static java.util.stream.Collectors.toList; class Result { public static String timeConversion(String s) { //inFormat(12시간): hh(01시~12시), mm(00~59분), ss(00~59초), aa(AM/PM) DateFormat inFormat = new SimpleDateFormat( "hh:mm:ssaa"); //outFormat(24시간): HH(00시~23시), mm(00~59분), ss(00~59초) DateFormat outFormat = new SimpleDateFormat( "HH:mm:ss"); Date date = null; try { // 우선 Date 형태로 변환한다. (informat) date = inFormat.parse(s); }catch (ParseException e ){ e.printStackTrace(); } String myDate=null; if( date != null ){ // 변수를 outformat date 형태로 바꾼다. (24시간 형태) myDate = outFormat.format(date); } return myDate; } }
'개발 여정 > 코딩테스트 준비' 카테고리의 다른 글
HackerRank 1달 과정 1주차 6번- Flipping bits (0) 2021.12.21 HackerRank 1달 과정 1주차 5번 - Lonely Integer (0) 2021.12.19 HackerRank 1달 과정 1주차 4번 - Sparse Arrays (0) 2021.12.09 HackerRank 1달 과정 1주차 2번 - Mini-Max Sum (0) 2021.12.05 HackerRank 1달 과정 1주차 1번 - Plus Minus (0) 2021.12.05