반응형
문제 : 원래 맞춰져 있던 알람을 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 |