2056

HoRi·2022년 7월 19일
0

SWEA_C++

목록 보기
12/18

2056. 연월일 달력

연월일로 구성된 8자리의 날짜가 입력으로 주어진다.
해당 날짜의 유효성을 판단한 후, 날짜가 유효하다면 YYYY/MM/DD 형식으로 출력하고,
유효하지 않을 경우, -1을 출력하는 프로그램을 작성하시오.
연월일로 구성된 입력에서 월은 1~12 사이의 값을 가지며, 일은 1,3,5,7,8,10,12월은 31일, 4, 6, 9, 11은 30일, 2월은 28로 한다.
단, 윤년은 없는 것으로 한다.

[입력]

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 2개의 수가 주어진다.

[출력]

출력의 각 줄은 #t로 시작하고 공백을 한 칸 둔 다음, 몫을 출력하고 공백을 한 칸 둔 다음 나머지를 출력한다.
(t는 테스트 케이스의 번호를 의미하며, 1부터 시작한다.)

코딩

#include <iostream>					// 입출력 헤더
#include <vector>					// 벡터 컨테이너를 사용하기 위한 헤더
#include <string>					// 문자열 헤더
using namespace std;				// std를 이름공간으로 설정

int main(){
	vector<int> dayOfMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
    								// 벡터 컨테이너 dayOfMonth를 정수형 배열로 값들을 저장
    int C;							// 정수형 변수 C 선언
    cin >> C;						// C를 입력 받음
    string s;						// 문자열 변수 s 선언
    
    for(int i=1; i<=C; i++){		// 1부터 C까지 1씩 증가하는 반복문
    	cin >> s;					// 문자열 입력
        int month = atoi(s.substr(4,2).c_str);
        							// 입력 받은 문자열의 인덱스 번호가 4인 값부터 2자리를 가지고 와서 
                                    // const char*형으로 만들어준 후 atoi함수를 이용해 정수 타입으로 바꿔서 month에 저장
                                    
                                    
                                    // atoi: 문자열을 정수 타입으로 바꿔주는 명령어
                                    // substr: 참조하는 문자열의 일부분을 리턴함
                                    // c_str: const char*로 리턴하는 함수
        int day = atoi(s.substr(6).c_str);
        							// 위와 동일, 인덱스 참조하는 부분만 달라짐
        cout << "#" << i << " ";
        
        if(1 <= month && month <= 12 && 1 <= day && day <= dayOfMonth[month-1]){
        							// month의 값이 1이상, 12이하일 경우와 day의 값이 1이상, dayOfMonth에 있는 값 이하라면
        	cout << s.substr(0, 4) << "/" << s.substr(4, 2) << "/" << s.substr(6) << endl;
            						// 문자열의 인덱스 번호가 0부터 4자리까지 출력하고 '/', 인덱스 번호가 4부터 2자리 출력하고 '/', 마지막 6부터 끝까지 출력
        }
        else{
        	cout << -1 << endl;		// 조건에 부합하지 않는다면 -1 출력
        }
    }
}



모든 출처는 SW Expert 아카데미에 있습니다.

해당 글은 영리적 목적이 아닌 학습의 기록으로 사용되었습니다. 오기나 잘못된 부분은 말씀해주시면 수정하겠습니다.

profile
무지성 작성소

0개의 댓글