2시 5분에서 4시 1분이 되려면 몇 분이 흘러야 하는지를 어떻게 계산해 볼 수 있을까요?
2시 5분에서 시작하여 1분 단위로 시뮬레이션을 하며, 60분이 되면 시간을 늘리고 분을 다시 0으로 맞추는 식으로 진행해볼 수 있습니다.
하지만 이런 경우에는, 0시 0분에서 시작하여 각 시간까지 걸리는 분을 계산하여 그 차이를 계산하는 식으로 진행하면 시뮬레이션을 직접 진행하지 않더라도 답을 쉽게 구할 수 있게 됩니다.
#include <iostream>
using namespace std;
int main() {
int hour = 2, mins = 5;
int elapsed_time = 0;
while(true) {
if(hour == 4 && mins == 1)
break;
elapsed_time++;
mins++;
if(mins == 60) {
hour++;
mins = 0;
}
}
cout << elapsed_time;
return 0;
}
2월 5일에서 4월 1일이 되려면 몇 일이 흘러야 하는지를 어떻게 계산해 볼 수 있을까요?
단, 해당 연은 윤년이 아니기 때문에 2월은 28일까지 있다고 가정합시다.
2월 5일에서 시작하여 1일 단위로 시뮬레이션을 하며, 해당 월에 있는 일 수를 넘어가게 되면 그 다음 달로 넘기고 일자를 다시 1로 맞추는 식으로 진행해볼 수 있습니다.
1월 1일에서 시작하여 각 날짜까지 총 몇 일이 있는지를 계산하여 그 차이를 계산하는 식으로 진행하면 시뮬레이션을 직접 진행하지 않더라도 답을 쉽게 구할 수 있게 됩니다.
#include <iostream>
using namespace std;
int main() {
int month = 2, day = 5;
int elapsed_days = 0;
// 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
int num_of_days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
while(true) {
if(month == 4 && day == 1)
break;
elapsed_days++;
day++;
if(day > num_of_days[month]) {
month++;
day = 1;
}
}
cout << elapsed_days;
return 0;
}