관리 메뉴

Kim's Programming

2056. 연월일 달력 본문

SW ExpertAcademy/D1

2056. 연월일 달력

Programmer. 2018. 11. 30. 21:52

2056. 연월일 달력

문제출처:https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5QLkdKAz4DFAUq&categoryId=AV5QLkdKAz4DFAUq&categoryType=CODE




풀이 방법



<코드>


#include <iostream>

int main()
{
    int n{0};
    std::cin>>n;
    
    for(int testCase =1 ; testCase<=n ; testCase++)
    {
        int input{0};
        bool isValid = true;
        std::cin>>input;
        
        int year = input / 10000;
        input = input - (year * 10000);
        
        int month = input / 100;
        input = input%100;
        if(month <1 || month >12) 
            isValid =false;
        
        switch(month)
        {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                if(input>31 || input<1)
                    isValid = false;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                if(input>30 || input<1)
                    isValid = false;
                break;
            case 2:
                if(input>28 || input<1)
                    isValid = false;
                break;
        }
        
        std::cout<<"#"<<testCase<<" ";
        if(isValid)
        {
            if(year<1000)
            {
                std::cout.width(4);
                std::cout.fill('0');
            }
        	std::cout<<year<<'/';
            std::cout.width(2);
            std::cout.fill('0');
            std::cout<<month<<'/';
            std::cout.width(2);
            std::cout.fill('0');
            std::cout<<input<<"\n";
        }
        else
           	std::cout<<-1<<"\n";
    }
    
    return 0;
}

'SW ExpertAcademy > D1' 카테고리의 다른 글

2063. 중간값 찾기  (0) 2018.11.30
2058. 자릿수 더하기  (0) 2018.11.30
2050. 알파벳을 숫자로 변환  (0) 2018.11.30
2047. 신문 헤드라인  (0) 2018.11.30
2046. 스탬프 찍기  (0) 2018.11.30