문제 정보: 2056. 연월일 달력
[입력]
입력은 첫 줄에 총 테스트 케이스의 개수 T가 온다.
다음 줄부터 각 테스트 케이스가 주어진다.
[출력]
테스트 케이스 t에 대한 결과는 “#t”을 찍고, 한 칸 띄고, 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
입력 5 22220228 20150002 01010101 20140230 11111111 |
출력 #1 2222/02/28 #2 -1 #3 0101/01/01 #4 -1 #5 1111/11/11 |
public class solution_2056 {
public static void main(String args[]) throws Exception{
Scanner sc = new Scanner(System.in);
int T;
float V;
T = sc.nextInt();
String[] array = new String[T];
for(int test_case = 1; test_case <= T; test_case++){
array[test_case-1] = sc.next();
}
System.out.println();
String year, month, day;
for(int i=0; i<array.length; i++){
String result = "-1";
if(array[i].length() == 8){ //정상적인 년도
year = array[i].substring(0,4);
month = array[i].substring(4,6);
day = array[i].substring(6,8);
if(valid(year, month, day)){
result = year + "/" + month + "/" + day;
}
}
System.out.println("#"+(i+1)+" "+result);
}
}
public static boolean valid(String year, String month, String day){
boolean isReturn = true;
int iYear = Integer.parseInt(year);
int iMonth = Integer.parseInt(month);
int iDay = Integer.parseInt(day);
if(iYear < 1){
return false;
}else if(iMonth < 1 || iMonth > 12){
return false;
}else if(iDay < 1 || iDay > 31){
return false;
}
switch(iMonth){
case 2 :
isReturn = (iDay <= 28);
break;
case 4 :
case 6 :
case 9 :
case 11 :
isReturn = (iDay <= 30);
break;
}
return isReturn;
}
}
'알고리즘 > SW Expert Academy' 카테고리의 다른 글
1983. 조교의 성적 매기기 (0) | 2021.08.18 |
---|---|
1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기 (0) | 2021.08.05 |
1984. 중간 평균값 구하기 (0) | 2021.08.05 |
1926. 간단한 369게임 (0) | 2021.07.28 |
2071. 평균값 구하기 (0) | 2021.07.28 |