한여름밤의코딩 2015. 11. 4. 17:59
package Calendar;

import java.util.Scanner;

public class Calendar {
	public static int isLunar(int year)
	{
		int iret;
		iret = year%4==0?(year%100==0?(year%400==0?1:0):1):0;
		return(iret);
	}	
	public static int Calculate_Year_Week(int year,int mon)
	{
		int	i,week = 1;	// 월요일
		int[] Month = {31,28,31,30,31,30,31,31,30,31,30,31};

		for(i=1900;i<year;i++) week = week + 1 + isLunar(i);
		for(i=0;i<mon-1;i++) week = week + Month[i];
		week = week + (mon>3 ? isLunar(year) : 0);
		return(week);
	}
	
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String[] Week = {"일","월","화","수","목","금","토"};
		int[] Month = {31,28,31,30,31,30,31,31,30,31,30,31};
		int	year,mon,week,day,i;
		
		System.out.print("년도를 입력하세요 = ");
		year = scan.nextInt();
		System.out.print("월을 입력하세요 = ");
		mon = scan.nextInt();
		week = Calculate_Year_Week(year,mon) % 7;
		System.out.printf("%d년도 %d월 1일은 %s요일입니다.\n",year,mon,Week[week]);
		System.out.println("   일  월   화  수   목  금   토");
		day = Month[mon-1] + (isLunar(year)==1 && mon==2 ? 1 : 0);
		for(i=0;i<week;i++) System.out.print("   ");
		for(i=1;i<=day;i++) {
			System.out.printf(" %2d",i);
			if ((i+week)%7==0) System.out.println();  
		}
	}
}