Stay Hungry Stay Foolish

BOJ 코딩테스트/Bronze

BOJ 2884번 : 알람 시계 (C언어/Bronze 3)

dev스카이 2022. 6. 24. 19:12

이미지 클릭 시 해당 문제로 이동

 

문제

"45분 일찍 알람 설정하기"이다. 이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로 고쳐야 하는지 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 두 정수 H와 M이 주어진다. (0 ≤ H ≤ 23, 0 ≤ M ≤ 59) 그리고 이것은 현재 상근이가 설정한 놓은 알람 시간 H시 M분을 의미한다. 입력 시간은 24시간 표현을 사용한다. 24시간 표현에서 하루의 시작은 0:0(자정)이고, 끝은 23:59(다음날 자정 1분 전)이다. 시간을 나타낼 때, 불필요한 0은 사용하지 않는다.

 

출력

첫째 줄에 상근이가 창영이의 방법을 사용할 때, 설정해야 하는 알람 시간을 출력한다. (입력과 같은 형태로 출력하면 된다.)

 

 

예제 입력

0 30

예제 출력

23 45

문제 풀이

1. 45분 미만일 경우와, 이상일 경우로 나눈다.

2. 45분 미만일 경우는 시(H)가 1시간 이전으로 돌아가야 하고, 분(M)은 45분 이전으로 돌아가야 한다. 이때, 입력된 값(M)에서 45분을 그대로 빼게 되면 음수가 되며, 올바른 값이 나오지 않는다. 따라서 60분에서 45분을 뺀 값인 15분에 입력 값(M)을 더하면 된다.

3. 만약 입력 값(H)이 0시일 경우에는 H-1을 시켜주면 음수가 되기 때문에 24시 + H를 해줘서 23시가 되게 한다. 

4. 45분 이상일 경우에는 입력된 값(M)에서 45분만 빼주면 된다.

 

 

Solution

#include <stdio.h>

int main() {
    int H, M;
    scanf("%d %d", &H, &M);
    if(M < 45){
        H = H - 1;
        M = 15 + M;
        if(H < 0){
            H = 24 + H;
        }
    }
    else{
        M = M - 45;
    }
    printf("%d %d", H, M);
    return 0;
}