문제
연월일 순으로 구성된 8자리의 날짜가 입력으로 주어진다. [그림1] 과 같이 ”YYYY/MM/DD”형식으로 출력하고, 날짜가 유효하지 않을 경우, -1 을 출력하는 프로그램을 작성하라. 연월일로 구성된 입력에서 월은 1~12 사이 값을 가져야 하며 일은 [표1] 과 같이, 1일 ~ 각각의 달에 해당하는 날짜까지의 값을 가질 수 있다. ※ 2월의 경우, 28일인 경우만 고려한다. (윤년은 고려하지 않는다.) |
1. 코드
import java.util.Scanner;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
int[] month = {31,28,31,30,31,30,31,31,30,31,30,31};
for(int i=0; i<t; i++){
String str = sc.next();
int year = Integer.parseInt(str.substring(0,4));
int mon = Integer.parseInt(str.substring(4,6));
int day = Integer.parseInt(str.substring(6,8));
if((1<=mon&&mon<=12)&&(1<=day&&day<=month[mon-1])) System.out.printf("#%d %04d/%02d/%02d\n",(i+1),year,mon,day);
else System.out.printf("#%d -1\n",(i+1));
}
}
}
2. 출력
#1 2222/02/28
#2 -1
#3 0101/01/01
#4 -1
#5 1111/11/11
'SW expert Academy > D1' 카테고리의 다른 글
[SW Expert Academy] 2047번 신문 헤드라인 (0) | 2023.04.12 |
---|---|
[SW Expert Academy] 2050번 알파벳을 숫자로 변환 (0) | 2023.04.12 |
[SW Expert Academy] 2058번 자릿수 더하기 (0) | 2023.04.11 |
[SW Expert Academy] 2063번 중간값 찾기 (0) | 2023.04.11 |
[SW Expert Academy] 2068번 최대수 구하기 (0) | 2023.04.11 |