© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

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

BOJ 5928 - Contest Timing

2025-08-27
BOJ
브론즈 IV
cpp
원본 문제 보기
수학
구현
사칙연산

문제

BOJ 5928 - Contest Timing

대회가 특정 시각(11일 11시 11분)에 시작할 때, 입력으로 주어진 시각까지 대회 시작 후 몇 분이 경과했는지 계산하는 문제다. 입력 시각이 대회 시작 이전이면 -1을 출력한다.

입력

  • 한 줄에 일(d), 시(h), 분(m)이 주어진다.

출력

  • 대회 시작 후 경과 분 수를 출력하고, 시작 전이면 -1을 출력한다.

예제

입력출력
11 11 110
11 11 10-1
11 12 049

풀이

모든 시각을 분 단위로 변환한 후 대회 시작 시각(기준값)과의 차이를 구한다.

  1. 입력 d, h, m을 총 분으로 환산한다: m + h * 60 + d * 60 * 24.
  2. 대회 시작 기준값: 11일 11시 11분 = 11 + 11 * 60 + 11 * 60 * 24 = 15851분.
  3. 차이가 음수이면 -1, 그렇지 않으면 차이를 출력한다.

핵심 아이디어: 날짜와 시각을 단일 단위(분)로 통일하면 단순 뺄셈으로 경과 시간을 계산할 수 있다.

코드

#include <iostream>
using namespace std;
int d, h, m;
int main()
{
  cin >> d >> h >> m;
  int pivot = 11 + 11 * 60 + 11 * 60 * 24;
  int ans = m + h * 60 + d * 60 * 24 - pivot;
  if (ans < 0)
    cout << -1 << '\n';
  else
    cout << ans << '\n';
}

복잡도

  • 시간: O(1) — 단일 수식 계산
  • 공간: O(1)