[SWEA] D1.연월일 달력 (C++)

jhyunn·2024년 2월 28일
0

SWEA

목록 보기
7/12

2056. 연월일 달력

문제 링크

#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'을 빼면 간단하다.

profile
https://github.com/Sungjeonghyun

0개의 댓글