© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 5575 - 타임 카드

2024-09-17
BOJ
브론즈 IV
cpp
원본 문제 보기
수학
구현

문제

BOJ 5575 - 타임 카드

3명의 직원에 대해 출근 시각과 퇴근 시각이 주어질 때, 각각의 근무 시간을 시/분/초로 출력하라.

입력

3줄에 걸쳐 각 직원의 출근 시각(h m s)과 퇴근 시각(h m s)이 주어진다.

출력

3줄에 걸쳐 각 직원의 근무 시간을 시 분 초로 출력한다.

예제

입력출력
9 0 0 18 0 0 9 0 1 18 0 0 12 14 52 12 15 309 0 0 8 59 59 0 0 38

풀이

시각을 초 단위로 변환하여 차이를 구한 뒤 다시 시/분/초로 역변환한다.

  1. 출근 시각과 퇴근 시각을 각각 초 단위(h*3600 + m*60 + s)로 변환한다
  2. 퇴근 - 출근으로 근무 시간(초)을 구한다
  3. 나눗셈과 나머지 연산으로 시(/3600), 분(%3600/60), 초(%60)를 역변환한다

핵심 아이디어: 시간 계산을 초 단위로 통일하면 단순 뺄셈으로 차이를 구한 뒤 역변환하면 된다.

코드

#include <iostream>
using namespace std;
 
int main()
{
  int sh, sm, ss, eh, em, es;
  int start, end, t, h, m, s;
  for (int i = 0; i < 3; i++)
  {
    cin >> sh >> sm >> ss >> eh >> em >> es;
    start = (sh * 3600) + (sm * 60) + ss;
    end = (eh * 3600) + (em * 60) + es;
    t = end - start;
    h = t / 3600;
    m = (t % 3600) / 60;
    s = (t % 3600) % 60;
 
    cout << h << " " << m << " " << s << endl;
  }
  return 0;
}

복잡도

  • 시간: O(1)
  • 공간: O(1)