본문 바로가기

BAEKJOON/수학

백준 2884번 [알람 시계](C++)-yes6686- 티스토리

728x90
SMALL

백준 문제 풀이: 2884 [알람 시계]


문제 링크: https://www.acmicpc.net/problem/2884

문제 설명:

현재 시간에서 45분 일찍 알람을 설정하려고 합니다. 만약 시간이 00:00일 경우, 알람 시간이 전날로 넘어가는 경우도 고려해야 합니다. 주어진 시(hour)와 분(minute)을 기준으로, 45분 전의 시간을 출력하는 프로그램을 작성하세요.

입력 조건:

  • 첫째 줄에 두 정수 H와 M이 주어집니다. (0 ≤ H ≤ 23, 0 ≤ M ≤ 59)

출력 조건:

  • 45분 전의 시간을 공백으로 구분하여 출력합니다. (24시간 표기법 사용)

문제 해결 코드


#include <iostream>
using namespace std;

int main() {
    int h, m;
    cin >> h >> m; // 현재 시간 입력

    // 분 단위 처리
    m -= 45;
    if (m < 0) { // 분이 0보다 작으면 시간을 줄이고 분을 조정
        m += 60;
        h--;
    }

    // 시 단위 처리
    if (h < 0) { // 시간이 0보다 작으면 23시로 설정
        h = 23;
    }

    // 결과 출력
    cout << h << " " << m << endl;

    return 0; // 프로그램 정상 종료
}

코드 설명

위 코드는 현재 시간에서 45분 전의 시간을 계산하여 출력합니다.

  • 분 단위 처리:
    • 현재 분에서 45를 뺍니다. 결과가 음수라면 60을 더해 조정하고, 시(hour)를 줄입니다.
  • 시 단위 처리:
    • 시가 음수라면 23으로 설정하여 하루 전으로 넘어가는 시간을 반영합니다.
  • 출력: 계산된 시와 분을 출력합니다.

시간 복잡도 분석:

  • 모든 계산이 상수 시간 내에 이루어지므로 시간 복잡도는 O(1)입니다.

결과

다음은 입력 예시와 출력 결과입니다:

입력:
10 10

출력:
9 25
입력:
0 30

출력:
23 45
입력:
23 50

출력:
23 5

다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!

728x90
LIST