스터디사이트 : 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 |
'JAVA > JAVA 자료구조 알고리즘' 카테고리의 다른 글
JAVA 알고리즘 : 6 x 6 배열 안의 모래시계집합들의 합 중 최대합 구하기 (0) | 2016.07.11 |
---|---|
JAVA 알고리즘 : 10진수에서 2진수 변환 후 출력되는 1의 최대 연속자릿수 구하기 (0) | 2016.07.10 |
JAVA 알고리즘 : 독캔디를 먹는 죄수 찾기 (0) | 2016.07.08 |
JAVA 알고리즘 : 특수기호로 직각삼각형 만들기 (0) | 2016.07.08 |
JAVA 알고리즘 : 양수, 음수, 0 파악하여 각 갯수를 비율로 출력하기 (0) | 2016.07.08 |