[백준] 25286번: 11월 11일

짜장범벅·2022년 8월 7일
0

백준

목록 보기
22/26

1 문제

날짜를 계산하되, 윤년에 대한 예외 처리 추가

2 Idea

문제를 성실히 구현하면 된다...

3 Code

#include <iostream>

constexpr int MAX_DATE[12] = {
    31, 28, 31, 30, 
    31, 30, 31, 31, 
    30, 31, 30, 31};

void printDate(const int y, const int m){
    int y_new = 0;
    int m_new = 0;
    int d_new = 0;

    if (m==1){
        y_new = y-1;
        m_new = 12;
        d_new = 31;
    }
    else if (m==3){
        y_new = y;
        m_new = 2;

        //check 28 or 29
        if (((y%4 == 0) && (y%100 != 0)) || (y%400 == 0)){
            d_new = 29;
        }
        else{
            d_new = 28;
        }
    }
    else{
        y_new = y;
        m_new = m-1;
        d_new = MAX_DATE[m_new-1];
    }

    printf("%d %d %d\n", y_new, m_new, d_new);

    return;
}

int main(){
    int T = 0;
    std::cin >> T;

    for (int i=0; i<T; ++i){
        int y = 0;
        int m = 0;

        std::cin >> y >> m;

        printDate(y, m);
    }
}
profile
큰일날 사람

0개의 댓글