https://www.acmicpc.net/problem/1408
1. 아이디어
StringTokenizer를 통한 파싱을 활용하면 간단하게 해결할 수 있다.
2. 문제풀이
StringTokenizer에서 구분자를 콜론 기호로 설정해서 시, 분, 초를 파싱할 수 있다. 임무를 시작한 시간과 현재 시간 모두 파싱해서 초 단위로 변환했고 두 시간의 차를 다시 StringBuilder로 양식에 맞게 출력하는 방식으로 구현했다.
다만 현재 시간이 임무를 시작한 시간보다 이전 시간처럼 표시되는 경우를 고려해서 하루를 보정해줘야 한다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int time1 = getTime(br.readLine());
int time2 = getTime(br.readLine());
int time = time2 > time1 ? time2 - time1 : time2 - time1 + 86400;
int h3 = time / 3600;
int m3 = time % 3600 / 60;
int s3 = time % 60;
if (h3 < 10) sb.append("0");
sb.append(h3).append(":");
if (m3 < 10) sb.append("0");
sb.append(m3).append(":");
if (s3 < 10) sb.append("0");
sb.append(s3);
bw.write(sb.toString());
bw.flush();
}
private static int getTime(String time) {
StringTokenizer st = new StringTokenizer(time, ":");
int h = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int s = Integer.parseInt(st.nextToken());
return h * 3600 + m * 60 + s;
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 2443번 - 별 찍기 - 6 [Java] (0) | 2025.01.05 |
---|---|
[백준] 2442번 - 별 찍기 - 5 [Java] (0) | 2025.01.05 |
[백준] 13300번 - 방 배정 [Java] (1) | 2025.01.05 |
[백준] 7795번 - 먹을 것인가 먹힐 것인가 [Java] (0) | 2025.01.05 |
[백준] 10804번 - 카드 역배치 [Java] (0) | 2025.01.05 |