#20. 백준 2525번 문제 풀이: 오븐 시계 | 문제 원본 보기 |
--입력-- 14 30 20 --출력-- 14 50 --입력-- 17 40 80 --출력-- 19 0 --입력-- 23 48 25 --출력-- 0 13
첫번째 방법은 시각의 분에 추가된 분을 더해서, 시간과 분으로 나누어 시간을 더해주는 방법이 있다. 10 30 에 40분이 추가된다면, 분을 더해주면 10시 70분 > 10시+1시 10분 > 11시 10분 으로 계산한다. 두번째 방법은 시간을 분으로 환산해서 추가된 분을 더해주고, 다시 시각으로 환산하는 방법이다. 10 30 에 40분이 추가된다면 10시*60분=600분+30분+40분= 670분 > 670/60(시간) 670%60(나머지는 분) > 11시 10분이 된다. 두번째 방법이 알고리즘이 간결하기 때문에 두번째 방법으로 코드를 작성해 보자.
#include <stdio.h>
int main() {
int h, m, m2, hm;
//m2:추가시간, hm: 시각을 분으로 환산할 때 사용할 변수
scanf("%d %d\n%d", &h, &m, &m2);
// 시간, 분, 추가시간 값을 입력받아 정수로 대입.
hm = h*60 + m; // 시간에 60을 곱해 분으로 환산하고 +분을 더한다.
hm += m2; // 추가 시간(분)을 더한다.
printf("%d %d", (hm / 60) % 24, hm % 60);
// 전체 분을 60으로 나눈값은 시간, 나머지 값은 분이 된다.
// 24시간을 넘어가지 않도록 %24로 시간의 나머지 값으로 계산
return 0;
}