Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 두 시간 구간의 차이 계산하기

문제 개요

'HH:MM:SS' 형식의 문자열로 표현된 두 시간 구간이 주어집니다. 여기서 'HH'는 시(hour), 'MM'은 분(minute), 'SS'는 초(second)를 나타냅니다. 이 두 시간 구간 사이의 차이를 동일한 문자열 형식으로 구하는 것이 이번 문제의 목표입니다.

시간 구간 1 = 8:6:2
시간 구간 2 = 3:9:3
두 시간의 차이 = 4:56:59

동작 원리

시간 차이를 계산할 때는 일반적인 뺄셈과 마찬가지로 낮은 자리부터 비교하며, 필요한 경우 상위 자리에서 값을 빌려오는(자리내림) 방식을 사용합니다.

  • 초 단위 처리: 두 번째 시간의 초가 첫 번째 시간의 초보다 크면, 첫 번째 시간의 분에서 1을 빼고 초에 60을 더해 계산합니다.
  • 분 단위 처리: 마찬가지로 두 번째 시간의 분이 더 크면, 첫 번째 시간의 시에서 1을 빼고 분에 60을 더합니다.
  • 시 단위 처리: 위 과정이 끝나면 각 단위별로 단순히 뺄셈을 수행합니다.

예제 코드

다음은 C++로 작성된 프로그램으로, 사용자로부터 두 시간 구간을 입력받아 그 차이를 계산하고 출력합니다.

#include <iostream>
using namespace std;
int main() {
   int hour1, minute1, second1;
   int hour2, minute2, second2;
   int diff_hour, diff_minute, diff_second;
   cout << "Enter time period 1" << endl;
   cout << "Enter hours, minutes and seconds respectively: "<< endl;
   cin >> hour1 >> minute1 >> second1;
   cout << "Enter time period 2" << endl;
   cout << "Enter hours, minutes and seconds respectively: "<< endl;
   cin >> hour2 >> minute2 >> second2;
   if(second2 > second1) {
      minute1--;
      second1 += 60;
   }
   diff_second = second1 - second2;
   if(minute2 > minute1) {
      hour1--;
      minute1 += 60;
   }
   diff_minute = minute1 - minute2;
   diff_hour = hour1 - hour2;
   cout <<"Time Difference is "<< diff_hour <<":"<< diff_minute <<":"<<diff_second;
   return 0;
}

실행 결과

Enter time period 1
Enter hours, minutes and seconds respectively: 7 6 2
Enter time period 2
Enter hours, minutes and seconds respectively: 5 4 3
Time Difference is 2:1:59

정리

이 방법은 시·분·초를 각각 정수 변수로 다루면서, 뺄셈 과정에서 발생하는 자리내림을 조건문으로 처리하는 것이 핵심입니다. 코드가 단순하지만 시간 연산의 기본 원리를 이해하는 데 매우 유용한 예제이며, 이를 확장하면 날짜 차이 계산이나 타이머 기능 구현에도 응용할 수 있습니다.