알람 시계

문제 링크

알람 시계

분석

시간 HM이 주어질 때 45분이 빠른 시간을 반환해야합니다.

이때, 주어지는 시간은 24시간으로 표현합니다.
이 경우 45분 빠른 시간을 반환해야하기 때문에 0시 45분 이전일 때 23시가 되어야 합니다.

시간은 분으로 변환해 결과값을 구하는 것이 계산이 편리합니다.
시간을 분으로 변환하여 총 시간을 분으로 나타내려 할 경우 $H \times 60 + M$와 같습니다.

풀이

#include <iostream>

int main()
{
    int H, M;
    
    // 입력
    std::cin >> H >> M;
    
    // 총 시간을 분으로 관리한다.
    int TotalMinutes = H * 60 + M;
    
    // 45분을 앞선 값을 구한다.
    int ResultMinutes = (TotalMinutes - 45 + 24 * 60) % (24 * 60);
    
    // 출력
    std::cout << ResultMinutes / 60 << " " << ResultMinutes % 60 << std::endl;
}

45분 앞선 값을 구할 때 $24 \times 60$를 더하는 것은 0시 45분 이전일 때에 다시 23시로 돌아가기 위해 사용합니다.
이후 $24 \times 60$의 값으로 다시 나머지 값을 사용하는 것은 24시간보다 커지는 것에 대해 처리하기 위함입니다.

$24 \times 60$ 대신 $1440$이라는 값을 사용해도 무방합니다.

성능 요약

시간 복잡도는 상수 개의 연산만 수행하므로 $O(1)$입니다.

공간 복잡도는 고정된 크기의 상수 공간을 사용하기 때문에 $O(1)$입니다.

메모리: 2020 KB

시간: 0 ms

Date:     Updated:

카테고리:

태그:

Baekjoon 카테고리 내 다른 글 보러가기

댓글남기기