#19. 백준 2884번 문제 풀이: 알람 시계 | 문제 원본 보기 |
--입력-- 10 10 --출력-- 9 25
시간은 10진수가 아니기에 더하거나 뺄 때 단순한 숫자의 빼기와 다르다. 한가지 방법은 분에서 45분을 빼고, 분이 음수가 되면 시간에서 한 시간 빼주고 분에 60분을 더해 주는 방법으로 계산할 수 있다. 10시 10분 이라면 10분-45분=-35분, 음수 이므로 시간에서 한시간을 빼면 9시, 분에 60분 더하면 25분, 결과는 9시 25분이 된다. 또 다른 방법은 시간을 분으로 환산하고 분을 뺀 다음 다시 시간과 분으로 변환하는 방법이다. 10시 10분 이라면 10시*60분+10분 = 610분. 45분을 빼면 565분. 60으로 나누면 시간, 나머지는 분이 된다. 두번째 방법으로 프로그램을 작성해 보겠다.
#include <stdio.h>
int main() {
int h, m, hm; //hm: 시각을 분으로 환산할 때 사용할 변수
scanf("%d %d", &h, &m); // 시간, 분 값을 입력받아 정수로 대입.
hm = h*60 + m; // 시간에 60을 곱해 분으로 환산하고 +분을 더한다.
hm -= 45; // 45 분을 뺀다.
if(hm < 0) hm += 24*60; // -값이면 24시간 분을 더해줌
printf("%d %d", hm / 60, hm % 60);
//전체 분을 60으로 나눈값은 시간, 나머지 값은 분이 된다.
return 0;
}