[BOJ 백준] 2884 - 알람 시계 (C++)

문제 바로가기

https://www.acmicpc.net/problem/2884


관련 알고리즘

- 해당 없음


정답 및 해설

현재 시간과 분을 입력받아 45분전 시간을 출력한다.

45분을 먼저 빼고 음수가 되는 시간이 있다면 양수로 바꾸어 출력하면 해결할 수 있다.

C++

더보기
#include<iostream>
using namespace std;
int main(){
    int h,m;
    cin>>h>>m;
    m-=45;
    if(m<0){
        h-=1;
        if(h<0)
            h+=24;
        m+=60;
    }
    cout<<h<<" "<<m;
}

 

Line 해설
5 입력받은 분 (m)에서 45를 뺀다.
6~11 45를 뺀 분이 음수라면 60을 더해 양수로 바꿔주어야 한다.
-20분이라면 60분부터 20분전이므로 40분을 구한다.
덧셈 뺄셈을 하듯이 윗 자리수를 하나 빼주어야한다
7~9 윗 자리수인 시간 단위를 1 빼는데 또 음수가 나올 경우 24를 더해 양수로 바꿔주어야 한다.
이럴 경우 윗 자리수일 일 단위를 하루 빼주어야 할텐데 해당 문제에서는 고려하지 않는다.