시뮬레이션 - 날짜와 시간 계산

CodeKong의 기술 블로그·2023년 7월 4일
1

코딩테스트 스킬

목록 보기
1/5

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;
}

0개의 댓글