#include <iostream>
using namespace std;
char *slicing(char* a, int st, int ed) {
char* tmp = new char[ed - st+1];
for (int i = 0; i < ed - st; i++) tmp[i] = a[st + i];
tmp[ed - st] = '\0';
return tmp;
}
int to_int(char *a, int st, int ed) {
a = slicing(a, st, ed);
int n = 0;
for (int i = ed-st-1; i >= 0; i--) {
int tmp = a[ed-st-1-i]-'0';
for (int j = 0; j < i; j++) tmp *= 10;
n += tmp;
}
return n;
}
int main() {
int T, dates[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
cin >> T;
for (int t = 1; t <= T; t++) {
char N[9];
cin >> N;
cout << "#" << t << " ";
if ((to_int(N, 4, 6) >= 1 && to_int(N, 4, 6) <= 12) && (dates[to_int(N, 4, 6)] >= to_int(N, 6, 8)))
cout << slicing(N, 0, 4) << '/' << slicing(N, 4, 6) << '/' << slicing(N, 6, 8) << endl;
else
cout << -1 << endl;
}
}
풀이
문자열 슬라이싱과, 이를 int type으로 변환하는 것을 구현해야한다.
char -> int로 변환하는 것은, 문자열에서 '0'을 빼면 간단하다.