반응형
HH:MM:SS 포맷의 시간 차이 계산하기
문제는 "HH:MM:SS" 포맷으로 표현된 두 시각 사이의 차이를 동일한 포맷으로 출력하는 것입니다. 이 과정에서 다음과 같은 단계를 따릅니다:
- ':' 문자를 기준으로 시간, 분, 초를 쪼개어 각각 분리합니다.
- 분리된 시간, 분, 초를 정수형으로 변환한 뒤, 두 시각의 차이를 계산합니다.
- 계산된 차이를 다시 "HH:MM:SS" 형태로 포맷하여 출력합니다.
제한 사항
- 시간 제한: 2초
- 메모리 제한: 512MB
- 제출: 2707
- 정답: 1037
- 맞힌 사람: 817
코드 설명
import java.util.Scanner;
public class SaltBomb {
public static void main(String[] args) {
// Scanner 객체 생성: 사용자 입력을 받기 위함
Scanner sc = new Scanner(System.in);
// 현재 시간을 "시:분:초" 형태로 입력받아 ":" 기준으로 분리
String[] current = sc.next().split(":");
// 목표 시간을 "시:분:초" 형태로 입력받아 ":" 기준으로 분리
String[] target = sc.next().split(":");
// 현재 시간을 시, 분, 초로 분리하여 정수형으로 변환
int currentHour = Integer.parseInt(current[0]);
int currentMinute = Integer.parseInt(current[1]);
int currentSecond = Integer.parseInt(current[2]);
// 목표 시간을 시, 분, 초로 분리하여 정수형으로 변환
int targetHour = Integer.parseInt(target[0]);
int targetMinute = Integer.parseInt(target[1]);
int targetSecond = Integer.parseInt(target[2]);
// 현재 시간과 목표 시간을 초 단위로 환산
int currentSecondAmount = currentHour * 3600 + currentMinute * 60 + currentSecond;
int targetSecondAmount = targetHour * 3600 + targetMinute * 60 + targetSecond;
// 목표 시간까지 필요한 초를 계산
int NeedSecondAmount = targetSecondAmount - currentSecondAmount;
// 0 이하인 경우(다음 날로 넘어가는 경우), 24시간을 초 단위로 더함
if (NeedSecondAmount <= 0) {
NeedSecondAmount += 24 * 3600;
}
// 필요한 시간, 분, 초를 계산
int needHour = NeedSecondAmount / 3600;
int needMinute = (NeedSecondAmount % 3600) / 60;
int needSecond = NeedSecondAmount % 60;
// 계산된 시간, 분, 초를 "시:분:초" 형태로 출력
// %02d를 사용해 두 자리 숫자로 표시, 한 자리 숫자일 경우 앞에 0을 붙임
System.out.printf("%02d:%02d:%02d", needHour, needMinute, needSecond);
}
}
반응형