코딩테스트 연습

[백준] 2884번 - 알람 시계 (JAVA)

zzzin 2022. 2. 5. 07:13

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를 이용하는 것도 처리시간을 줄일 수 있는 방법 중 하나이다. )