문제. 2058 자릿수 더하기
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
연월일 순으로 구성된 8자리의 날짜가 입력으로 주어진다.

해당 날짜의 유효성을 판단한 후, 날짜가 유효하다면
[그림1] 과 같이 ”YYYY/MM/DD”형식으로 출력하고,
날짜가 유효하지 않을 경우, -1 을 출력하는 프로그램을 작성하라.
연월일로 구성된 입력에서 월은 1~12 사이 값을 가져야 하며
일은 [표1] 과 같이, 1일 ~ 각각의 달에 해당하는 날짜까지의 값을 가질 수 있다.

※ 2월의 경우, 28일인 경우만 고려한다. (윤년은 고려하지 않는다.)
[입력]
입력은 첫 줄에 총 테스트 케이스의 개수 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 |
풀이
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 a = sc.next();
String y = a.substring(0,4); //int로 받았을때 1000자리가 0이라면 사라지기 때문에 string으로 받음
int m = Integer.parseInt(a.substring(4,6));
int d = Integer.parseInt(a.substring(6,8));
int arr[] = {0,31,28,31,30,31,30,31,30,31,30,31,30}; //달마다 정해진 일자 안에 들어가야함
if(m>12 || m < 1 || d > arr[m] || d < 1) System.out.println("#" + test_case + " -1");
else System.out.println("#" + test_case + " " + y + "/" + a.substring(4,6) + "/" + a.substring(6,8)); //2자리수가 나와야하기 때문에 첫번째에 0이 나올때를 대비하여 string으로 출력함
}
}
}
막 어렵진 않았지만 여태까지 d1문제들 중에서는 조금 생각할게 있었다. 이래야 하는 맛이 나지!
반응형
'취업이야기' 카테고리의 다른 글
SWEA(SW Expert Academy) [d1] 2047. 신문 헤드라인 (java) (0) | 2024.04.04 |
---|---|
SWEA(SW Expert Academy) [d1] 2050. 알파벳을 숫자로 변환 (java) (0) | 2024.04.04 |
SWEA(SW Expert Academy) [d1] 2058. 자릿수 더하기 (java) (0) | 2024.04.04 |
SWEA(SW Expert Academy) [d1] 2063. 중간값 찾기 (java) (0) | 2024.04.04 |
SWEA(SW Expert Academy) [d1] 2068. 최대수 구하기 (java) (0) | 2024.04.04 |
댓글