스터디사이트 : https://www.hackerrank.com



JAVA 알고리즘 AM, PM시간을 24시간형으로 변형하기



※ 코딩실습 - 조건


아래 조건에 따라 AM, PM으로 입력된 시간을 24시간 형으로 바꾸어 출력하라.


새벽

  12:00:00AM , 00:00:00

오후

  12:00:00PM , 12:00:00


입력

07:05:45PM


출력

19:05:45



디버깅

출력을 하려면 우선 24시간 포멧으로 입력받은 String을 변경해야 한다.

음..

분과 초는 그대로인 것 같고

시간이 바뀐다. AM과 PM에 따라..


시간 계산은 이렇게 해보자.

입력된 시간이..

AM이면, 00 에서 입력된 시간을 더하고,

PM이면, 12 에서 입력된 시간을 더하면 될 듯 하다.



코딩연습 & 결과

입력된 07:05:45PM 한 줄 전체가 String형일 것이므로, Scanner.next() 메소드로 한줄 전체를 받아서 변수로 저장 해 놓았다.

그리고 java.lang.String.split(":"); 메소드를 이용하여 ":" 를 기준으로 문자열을 나눠서 배열로 저장 시켜놓았다. 그러면 배열 저장형태는 이럴 거다.

  입력 : 07:05:45PM

배열[0] = 07

배열[1] = 05

배열[2] = 45PM

배열[2]의 45PM은 '45' 와 'PM' 으로 나누어서 변수에 저장해야 한다.

이것은 java.lang.String.substring(int beginIndex, int endIndex) 메소드를 이용해서 문자열을 다시 나눠서 저장했다.

beginIndex : 추출 문자열 시작위치

endIndex : 추출 문자열 끝위치 + 1


# 자바에서 문자열 비교는 == 으로 하지말고 .equals() 메소드를 써야 한다.

이유 : http://blog.naver.com/imf4/220609124936

public static void main(String[] args) {

        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */

        Scanner scan = new Scanner(System.in);

String restof=scan.next();

        String[] splits = restof.split(":");

        

        int hour=Integer.parseInt(splits[0]);

        int min=Integer.parseInt(splits[1]);

        int sec=Integer.parseInt(splits[2].substring(0, 2));

        String ampm=splits[2].substring(splits[2].length()-2, splits[2].length());

        

        if(ampm.equals("PM")){

        hour=hour+12;

        }

        if(hour==12 && ampm.equals("AM")){

            hour=0;

        }

  if(hour==24 && ampm.equals("PM")){

            hour=12;

        }


        System.out.printf("%02d:%02d:%02d", hour, min, sec);

        scan.close();

    }

결과 : 

19:05:45



+ Recent posts