프로그래밍 언어를 배우고나면 한번쯤 만들어보는 dday 프로그램. python같은 경우엔 datetime 모듈을 import해서 금방 불러오겠지만, C++는 그런 모듈이 딱히 없어보여서 그냥 구현하기로 했다. 특정 날짜를 기준으로 잡고 차이를 여러개 구해서 빼주는게 비교적 간단하다.
#include <iostream>
#include <vector>
using namespace std;
int cal(int y, int m, int d) {
vector<int> mth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int temp=0;
if (!(y % 4) && y % 100 || !(y % 400)){
mth[1]++;
}
for (int i=0; i<m-1; i++){
temp += mth[i];
}
return (y-1)*365 + temp + (d-1) + ((y-1)/4 - (y-1)/100 + (y-1)/400);
}
int main() {
int y1, m1, d1, y2, m2, d2, dday;
cin >> y1 >> m1 >> d1 >> y2 >> m2 >> d2;
dday = cal(y2, m2, d2) - cal(y1, m1, d1);
if (y2 - y1 > 1000 || (y2 - y1 == 1000 && (m1 < m2 || (m1 == m2 && d1 <= d2)))){
cout << "gg";
} else{
cout << "D-" << dday;
}
}