https://www.acmicpc.net/problem/2525
Answer
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
int HOUR_FOR_DAY = 24;
int MINUTE_FOR_DAY = 60;
int currentHour = 0;
int currentMinute = 0;
int timerForMinute = 0;
int endHour = 0;
int endMinute = 0;
try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
currentHour = Integer.parseInt(st.nextToken());
currentMinute = Integer.parseInt(st.nextToken());
timerForMinute = Integer.parseInt(br.readLine());
} catch(IOException e) {
System.err.println("ERROR : " + e.getMessage());
}
endHour = currentHour;
endMinute = currentMinute + timerForMinute;
if(endMinute >= MINUTE_FOR_DAY)
endHour += endMinute / MINUTE_FOR_DAY;
endHour %= HOUR_FOR_DAY;
endMinute %= MINUTE_FOR_DAY;
System.out.printf("%d %d", endHour, endMinute);
}
}
Code Review
try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
currentHour = Integer.parseInt(st.nextToken());
currentMinute = Integer.parseInt(st.nextToken());
timerForMinute = Integer.parseInt(br.readLine());
} catch(IOException e) {
System.err.println("ERROR : " + e.getMessage());
}
try-with-resources로 try에 자원 객체를 전달하여 try 작업이 끝나면 자동으로 자원을 반환해 준다.
`System.in`으로 사용자로부터 입력받은 데이터를 바이트 스트림으로 받는다.
`InputStreamReader` 클래스로 바이트 기반 스트림을 문자 기반 스트림으로 연결시켜 준다.
`BufferedReader` 클래스로 사용자가 입력한 문자 스트림을 읽는다.
`StringTokenizer` 클래스로 `BufferedReader`로 받은 문자열 한 줄을 공백 구분자로 나눈다.
`st.nextToken()`으로 공백으로 구분된 문자열을 차례로 반환한다.
endHour = currentHour;
endMinute = currentMinute + timerForMinute;
if(endMinute >= MINUTE_FOR_DAY)
endHour += endMinute / MINUTE_FOR_DAY;
endHour %= HOUR_FOR_DAY;
endMinute %= MINUTE_FOR_DAY;
- 17
- 40 + 80 = 120
- 120 >= 60 == true
- 17 + 120/60 = 17+2 = 19
- 17 % 24 = 19
- 120 % 60 = 0
Result