SWEA 2056 연월일 달력
문제 정보
- 문제 출처 : SW Expert Academy
- 문제 번호 : 2056
- 문제 제목 : 연월일 달력
- 문제 난이도 : D1
- 풀이 언어 : Java
문제
연월일 순으로 구성된 8자리의 날짜가 입력으로 주어진다. 해당 날짜의 유효성을 판단한 후, 날짜가 유효하다면 ”YYYY/MM/DD”형식으로 출력하고, 날짜가 유효하지 않을 경우, -1 을 출력하는 문제
접근
조건문을 활용해 문제를 풀었다.
풀이
- 입력 받은 문자열에서 연, 월, 일을 분리하여 각각 처리한다.
- 유효한 월이 1~12인지 확인한다.
- 각 월에 맞는 일수를 배열로 관리하여 처리한다.
- 마지막으로 유효한 날짜인 경우 포맷에 맞게 출력하고, 아니면 “-1″을 출력한다.
후기
쉽게 해결한 문제이다.
코드
Java
import java.util.Scanner;
import java.io.FileInputStream;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T;
T=sc.nextInt();
for(int test_case = 1; test_case <= T; test_case++)
{
String date = sc.next();
String yyyy = date.substring(0, 4);
String mm = date.substring(4, 6);
String dd = date.substring(6, 8);
int year = Integer.parseInt(yyyy);
int month = Integer.parseInt(mm);
int day = Integer.parseInt(dd);
boolean isValid = true;
if (month < 1 || month > 12) isValid = false;
else {
int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month == 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) {
days[1] = 29;
}
if (day < 1 || day > days[month - 1]) isValid = false;
}
System.out.print("#" + test_case + " ");
if (isValid) {
System.out.println(yyyy + "/" + mm + "/" + dd);
} else {
System.out.println("-1");
}
}
}
}
Java