작성일 :

문제 링크

5575번 - 타임 카드

설명

직원의 출근 시간과 퇴근 시간이 주어졌을 때,

근무 시간을 시, 분, 초 단위로 구하는 문제입니다.


시간은 24시간제로 표현되며, 각 시간은 시 분 초의 형태로 입력됩니다.

입력은 직원 3명에 대한 정보가 한 줄씩 주어지며, 각 직원의 출근 시각퇴근 시각의 순서입니다.


접근법

  • 출근 시각과 퇴근 시각을 초 단위로 환산합니다.
  • 퇴근 시각과 출근 시각을 모두 초 단위로 바꾼 후, 두 시각의 차이를 계산해 근무 시간을 구합니다.
  • 이 값을 다시 시, 분, 초로 환산하여 출력합니다.
  • 동일한 과정을 3번 반복하여 모든 직원의 근무 시간을 구합니다.


Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;

class Program {
  static void Main() {
    for (int i = 0; i < 3; i++) {
      var parts = Console.ReadLine().Split();
      int sh = int.Parse(parts[0]), sm = int.Parse(parts[1]), ss = int.Parse(parts[2]);
      int eh = int.Parse(parts[3]), em = int.Parse(parts[4]), es = int.Parse(parts[5]);

      int totalSeconds = (eh * 3600 + em * 60 + es) - (sh * 3600 + sm * 60 + ss);
      int h = totalSeconds / 3600;
      int m = (totalSeconds % 3600) / 60;
      int s = totalSeconds % 60;

      Console.WriteLine($"{h} {m} {s}");
    }
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  for (int i = 0; i < 3; i++) {
    int sh, sm, ss, eh, em, es;
    cin >> sh >> sm >> ss >> eh >> em >> es;
    int t = eh * 3600 + em * 60 + es - (sh * 3600 + sm * 60 + ss);
    cout << t / 3600 << ' ' << t % 3600 / 60 << ' ' << t % 60 << "\n";
  }

  return 0;
}