본문 바로가기

온라인 코딩/기타(Other)

[백준] 2884번 알람 시계

 

 

문제

소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<iostream>
 
using Time =  int;
constexpr int ALARM = 45;
 
void CheckHour(Time& h) {
 
    if (h == 0) {
        h = 23;
    }
    else {
        --h;
    }
}
 
void CheckTIme(Time& h, Time& m) {
 
    if (m - ALARM < 0) {
        CheckHour(h);
        m = 60 + (m - ALARM);
    }
    else {
        m -= ALARM;
    }
}
 
int main() {
    Time H, M;
    std::cin >> H >> M;
 
    CheckTIme(H, M);
    std::cout << (int)H << " " << (int)M << "\n";
 
 
}
 

 

후기

이 문제를 해결하기 위한 키워드는 시간이다.

 

시간 변수 H와 분 변수 M을 받아서 45분 일찍 일어날 수 있는 알람 시간을 구하는 문제이다.

먼저 변수 M을 체크해서 45분을 뺏을 때 0보다 작다면 시간이 바뀌어야 하기 때문에 CheckHoure() 메서드를 구현했으며 현재 분에서 45분을 빼고 다시 60분을 더하면 해당하는 분이 나온다. 이 문제는 그렇게 어려운 문제는 아니지만

이렇게 시간 관련 문제가 다른 문제에서 가끔 나오기 때문에 시간관련해서 문제를 풀어보는 것도 좋은 도움이 된다.

 

 

출처 및 레퍼런스

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