2056 년월일 달력 (D1)
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
int InputNum = stdIn.nextInt();
String N = stdIn.nextLine(); // 버퍼
int t = 1; // t값 초기화
for(int i = 0;i < InputNum; i++) { //첫 입력값 만큼 돈다
int number = 1; // 출력할 #number
int []A = new int[8]; // 배열의 크기 선언
String eight = stdIn.nextLine(); //
// 일단 다 배열에 넣어.
for(int j = 0 ; j < eight.length(); j++) {
A[j] = (eight.charAt(j)-'0');
}
// 뒷 자리 네자리 두 개씩 정수형으로 묶는다.
int firstN = A[4]*10+A[5];
int SecondN = A[6]*10+A[7];
if(firstN == 1 || firstN == 3 || firstN == 5 || firstN == 7 || firstN == 8 || firstN == 10 || firstN == 12) {
if(SecondN<=31) {
System.out.println("#"+t+" "+A[0]+A[1]+A[2]+A[3]+"/"+A[4]+A[5]+"/"+A[6]+A[7]);
t++;
}else {
System.out.println("#"+t+" "+ "-1");
t++;
}
}else if(firstN == 4 || firstN == 6 || firstN == 9 || firstN == 11) {
if(SecondN<=30) {
System.out.println("#"+t+" "+A[0]+A[1]+A[2]+A[3]+"/"+A[4]+A[5]+"/"+A[6]+A[7]);
t++;
}else {
System.out.println("#"+t+" "+ "-1");
t++;
}
}else if(firstN == 2) {
if(SecondN<=28) {
System.out.println("#"+t+" "+A[0]+A[1]+A[2]+A[3]+"/"+A[4]+A[5]+"/"+A[6]+A[7]);
t++;
}else {
System.out.println("#"+t+" " + "-1");
t++;
}
}else{
System.out.println("#"+t+ " " + "-1");
t++;
}
}
}
}
방법은 두 가지다. 정수형 문자를 받아서 하나식 쪼개서 넣을건지, 아니면 문자열로 받아서 정수형으로 바꿔줄 건지
-> 문자열이 더 편한 것 같아.
생각한 방법
- 8자리 문자를 받아서 앞 네자리는 배열에 넣어줘
- 뒷 네자리를 각각 2개씩 묶어서 정수형으로 계산한 뒤, 모든 조건을 통과하면 넣어주고 아니면 -1을 출력하게 하자.
주의사항
-> t가 왜 안커지지 하고 당황하지 말고. 프로그램 전체의 흐름을 본다.
참고자료
https://hashcode.co.kr/questions/1797/%EC%9E%90%EB%B0%94%EB%A5%BC-%EA%B3%B5%EB%B6%80%ED%95%98%EA%B3%A0-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4-%EC%A0%95%EC%88%98%EB%A5%BC-%EB%B0%B0%EC%97%B4%EB%A1%9C-%EC%A0%80%EC%9E%A5%EC%9D%84-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%98%EC%A3%A0