SWexpertAcademy(2056)

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++;
			}
			
		}		
	} 
}


방법은 두 가지다. 정수형 문자를 받아서 하나식 쪼개서 넣을건지, 아니면 문자열로 받아서 정수형으로 바꿔줄 건지

-> 문자열이 더 편한 것 같아.

생각한 방법

  1. 8자리 문자를 받아서 앞 네자리는 배열에 넣어줘
  2. 뒷 네자리를 각각 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

0%