24시간으로 표현되는 시간 값에서 45분을 앞당겼을 때의 시간을 구하는 문제이다.
시간은 "H M" 과 같이 두 숫자를 띄어쓰기로 구분된 한 줄로 입력받으며, 해당 숫자에서 45분을 앞당긴 숫자를 출력해야 한다.
만약 M이 45보다 크다면 H의 변동 없이 M-45계산만 적용한 후 시간을 출력하면 되지만, M이 45보다 작다면 H-1 계산을 하고 45분 더 앞당긴 값을 계산하여 M값을 출력해야 한다.
M이 45보다 작은 경우 45-M을 하고 난 후 나머지 값을 60분에서 빼야 하므로, 위와 같이 나머지 값의 절댓값을 저장하는 gab변수를 설정하여 사용하였다.
그러나 만약 H가 0이라면 H-1계산을 하였을 때 -1시가 되므로, 이 경우에만 별도의 조건문을 통해 -1이 아닌 23이 출력되도록 처리해준다.
마지막으로, 값을 입력받아 저장하는 경우 Scanner를 사용할 수도 있지만 BufferedReader와 StringTokenizer를 사용하면 처리시간을 더 줄일 수 있다. ( 동일하게 System.out.println() 대신 BufferedWriter를 이용하는 것도 처리시간을 줄일 수 있는 방법 중 하나이다. )
'코딩테스트 연습' 카테고리의 다른 글
[백준] 1110번 - 더하기 사이클 (JAVA) (0) | 2022.02.05 |
---|---|
[백준] 10951번 - A+B (JAVA) (0) | 2022.02.05 |
[프로그래머스] 1단계 - k번째 수 (JAVA) (0) | 2022.02.05 |
[프로그래머스] 1단계 - 음양더하기 (JAVA) (0) | 2022.02.05 |
[백준] 2588번 - 곱셈 (JAVA) (0) | 2022.01.30 |