개발 지식/알고리즘

[백준] 2884 알람 시계

트리맨스 2019. 6. 30. 12:48
반응형


문제 : 원래 맞춰져 있던 알람을 45분 일찍 출력하게 하면 된다. 시간의 표현법은 24시 이며, 자정은 0:0 이고 끝은 23:59 이다. (자정 1분 전) 


입력 : 첫째 줄에 시간과 분 이 공백을 기준으로 입력된다. 입력과 출력은 모두 24시 표현이며, 불필요한 0은 사용하지 않는다.


예시) 입력 : 10 10 , 출력 : 9 25


간단한 사칙연산 문제이다. 조금만 생각을 해보면 누구나 풀 수 있다고 생각한다.

이 문제에는 경우의 수를 나눌 수 있다. 자리빌림 없이 바로 뺄 수 있는 경우 (0 50) , 자리를 빌려야 하는 경우 (1 10), 하루가 넘어가는 경우 (0 10) 으로 나눌 수 있다.

첫 번째 경우에는 45분을 뺀 것을 바로 출력하면 된다.

그렇다면, 자리를 빌려야 하는 2번째 경우는 어떨까? 분 에다가 60분을 더한다음 45분을 빼면 될 것이다. 자리를 빌려주었으니, 시간은 1을 빼준다. 

마지막으로 하루가 넘어간 3번째 경우는 어떨까? 두 번째 경우를 실행했을 시에, 시간이 -1이 나온다면 23으로 바꾸어 주면 될 것이다. 이러한 생각으로 코드를 짜 보았다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    if(b<45
    {
        b+=60;
        a--;
        if(a<0) a=23;
    }
    printf("%d %d",a,b-45);
}
cs


반응형

'개발 지식 > 알고리즘' 카테고리의 다른 글

[백준] 2753 윤년  (0) 2019.12.18
[백준] 2606 바이러스  (0) 2019.07.12
[백준] 4673 셀프 넘버  (0) 2019.06.30
[백준] 11720 숫자의 합  (0) 2019.06.15
[백준] 9095 1,2,3 더하기  (0) 2019.06.06