stoi 와 substr 함수를 사용해서 날짜 각 부분 분리해서 수로 저장,
주의할 점
tmp_y += sum/12;
tmp_m = sum%12;
위와 같은 코드를 사용할 시 틀림
약정 개월을 더했을 때 딱 12달이 된다면
1년 추가하고 month가 0이 된다...
if(tmp_m == 0){
tmp_m = 12;
tmp_y--;
}
코드 추가시 해결 가능
if(tmp_y<today_y){ // 파기해야함
answer.push_back(i+1);
continue;
}else if(tmp_y == today_y){
if(tmp_m < today_m){
answer.push_back(i+1);
continue;
}else if(tmp_m == today_m){
if(tmp_d <=today_d){
answer.push_back(i+1);
}
}
}
약관 추가 날짜와 현재 날짜가 동일할 경우에도 파기 대상에 해당함 (문제 조건을 보면 계약일이 19일일때 종료일은 18일이 됨)
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int raw[50];
vector<int> solution(string today, vector<string> terms, vector<string> privacies) {
vector<int> answer;
int today_y = stoi(today.substr(0,4));
int today_m = stoi(today.substr(5,7));
int today_d = stoi(today.substr(8,10));
for(int i=0;i<terms.size();i++){
int month = stoi(terms[i].substr(2));
//printf("%d ",month);
raw[terms[i][0]-'A'] = month;
}
//printf("%d %d %d",today_y,today_m,today_d);
for(int i=0;i<privacies.size();i++){
int tmp_y = stoi(privacies[i].substr(0,4));
int tmp_m = stoi(privacies[i].substr(5,7));
int tmp_d = stoi(privacies[i].substr(8,10));
int tmp = raw[privacies[i][11]-'A'];
int sum = tmp_m + tmp;
tmp_y += sum/12;
tmp_m = sum%12;
if(tmp_m == 0){
tmp_m = 12;
tmp_y--;
}
printf("%d %d %d \n",tmp_y,tmp_m,tmp_d);
// if(tmp_d == 1){
// if(tmp_m ==1){
// tmp_y--;
// tmp_m = 12;
// tmp_d = 28;
// }else{
// tmp_m--;
// tmp_d = 28;
// }
// }else{
// tmp_d--;
// }
if(tmp_y<today_y){ // 파기해야함
answer.push_back(i+1);
continue;
}else if(tmp_y == today_y){
if(tmp_m < today_m){
answer.push_back(i+1);
continue;
}else if(tmp_m == today_m){
if(tmp_d <=today_d){
answer.push_back(i+1);
}
}
}
}
return answer;
}