import java.util.Calendar; // Calendar °´Ã¼¿Í io Ŭ·¡½ºÀÇ °´Ã¼µé À» ÀÌ¿ëÇÑ´Ù. import java.io.*; class Cal{ // ´Þ·ÂÀ» ´ã°í Àִ Ŭ·¡½º. static Calendar sDay = Calendar.getInstance(); // ½ÃÀÛÀ» À§ÇÑ °´Ã¼ static Calendar eDay = Calendar.getInstance(); // ÇØ´ç ´ÞÀÇ ³¡À» À§ÇÑ °´Ã¼ static int year,month,day; // Ŭ·¡½º º¯¼öµé. static int START_DAY_OF_WEEK; // ÇØ´ç ´ÞÀÇ ½ÃÀÛ ¿äÀÏ static int END_DAY; // ÇØ´ç ´ÞÀÇ ¸¶Áö¸· ÀÏ. //////////////////////////////////»ý¼ºÀÚ////////////////////////////////// public Cal(int y, int m, int d){ // »ý¼ºÀÚ year=y;month=m;day=d; // ¸ÞÀθ޼ҵ忡¼­ ÀÔ·ÂµÈ °ªµéÀ» °¢°¢ Ŭ·¡½º º¯¼ö¿¡ ÇÒ´çÇÑ´Ù. sDay.set(year, month-1, day); // ½ÃÀÛ°´Ã¼. ³â, ´Þ-1 (¿ùÀº À妽º°¡ 0ºÎÅÍ ½ÃÀÛÀÓ), ³¯Â¥ eDay.set(year, month, day); // ³¡ °´Ã¼. ³â, ´Þ , ³¯Â¥ eDay.add(Calendar.DAY_OF_MONTH, -1); // ³¡ °´Ã¼¿¡¼­ ¿¡¼­ ÇÏ·ç ÀüÀ¸·Î °¡¸é ÇØ´ç ¿ùÀÇ ¸¶Áö¸· ³¯. START_DAY_OF_WEEK = sDay.get(Calendar.DAY_OF_WEEK); // 1ÀÏÀÌ ½ÃÀÛÇÏ´Â ¿äÀÏ. END_DAY = eDay.get(Calendar.DAY_OF_MONTH); // ³¡°´Ã¼¿¡¼­ Àоî¿Â ÇØ´ç ¿ùÀÇ ¸¶Áö¸· ³¯Â¥. } ////////////////////////////////// ´Þ·Â ±âº» ¸Þ¼Òµå ////////////////////////////////// static void calendar(){ // ´Þ·Â ±âº» ¸Þ¼Òµå. System.out.println("\t\t" + year + ". " + ((month < 10)? "0"+month : ""+month) + "." + "\n\t====================="); System.out.print("\t SU MO TU WE TH FR SA\n\t"); // ŸÀÌƲ for(int space=1; space < START_DAY_OF_WEEK; space++) { // 1ÀÏ ¾Õ °ø¹é System.out.print(" "); // 1À» ÀÏ¿äÀÏÀ̶ó°í °¡Á¤ÇÏ°í 1ÀÏÀÌ ÂïÈ÷±â Àü±îÁö °ø¹éÀ» ¸¸µç´Ù. } for(int i=1, n=START_DAY_OF_WEEK ; i <= END_DAY ; i++, n++) { // 1ÀÏ¿¡ ÇØ´çµÇ´Â ¿äÀÏ¿¡¼­ ½ÃÀÛÇÏ¿© ¸¶Áö¸· ³¯Â¥±îÁö Ãâ·Â System.out.print((i < 10)? " "+i : " "+i ); // ÇÑÀÚ¸® ¼ýÀÚ¸é µÎÄ­¶ç¿ì±â, µÎÀÚ¸® ¼ýÀÚ¸é ÇÑÄ­¶ç¿ì±â. if(n%7==0) System.out.print("\n\t"); // ÇÑÁÙ¿¡ 7 ÀÏ Âï¾úÀ¸¸é ÇÑÁÙ ³»¸°´Ù. } System.out.println(); } ////////////////////////////////// ³â Ãâ·Â ////////////////////////////////// static void calen(int y){ // ³â Ãâ·Â year = y; //month = 1; //day = 1; for(;month<=12;month++){ // 1~12 ¿ù±îÁö º¯Çϸ鼭 °¢ °´Ã¼ Àç¼³Á¤ sDay.set(year, month-1, day); eDay.set(year, month, day); eDay.add(Calendar.DAY_OF_MONTH, -1); START_DAY_OF_WEEK = sDay.get(Calendar.DAY_OF_WEEK); END_DAY = eDay.get(Calendar.DAY_OF_MONTH); calendar(); // Àç ¼³Á¤µÈ °´Ã¼¿Í º¯¼öµé¿¡ ÇØ´çÇÏ´Â ´Þ·ÂÀ» Ãâ·Â. System.out.println(); } } ////////////////////////////////// ³â/¿ù Ãâ·Â ////////////////////////////////// static void calen(int y,int m){ // ³â,¿ù year = y; month = m; //day = 1; calendar(); // ´Þ·Â ±âº» ¸Þ¼Òµå Ãâ·Â } ////////////////////////////// ¿äÀÏ ////////////////////////////////// static void calen(int y, int m, int d){ // ¿äÀÏ year = y; month = m; day = d; // ³â, ¿ù, ÀÏÀ» Àоî Çش糯¥-1 ÀÇ À妽º ¹øÈ£°¡ ±× ³¯ÀÇ ¿äÀÏÀÌ µÊ. String week[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; // ¿äÀÏ ¹è¿­. System.out.println("\tDATE :: " + y + ". " + ((m < 10)? "0"+m : ""+m) + ". " + d + ". " + week[START_DAY_OF_WEEK-1]+"\n"); // ¿äÀÏ¿¡¼­ ½ÃÀÛ ¿äÀÏ-1 ¹ø° ¹è¿­ÀÌ ÇØ´ç ¿äÀÏÀ̹ǷΠÃâ·Â. } //////////////////////////////// ´Ü Ãâ·Â ////////////////////////////////// static void dan(int y, int cols){ // ´ÜÃâ·ÂÀº ¼³Á¤ºÎ°¡ ¸¹±â ¶§¹®¿¡ year = y; // ´Þ·Â ±âº» Ãâ·Â ¸Þ¼Òµå´Â »ç¿ëºÒ°¡. int DAY_CNT=0; // °°Àº ´Ü¿¡¼­ 6¶óÀÎÀÌ 2¹øÀÌ»ó Ãâ·ÂµÉ °æ¿ì¸¦ À§ÇÑ º¯¼ö int START_DAY_OF_WEEK; // 1ÀÏÀÇ ½ÃÀÛ¿äÀÏ int END_DAY; // ¸¶Áö¸· ³¯ int END_DAY_OF_WEEK; // 4¶óÀο¡¼­ ³¡³¯°æ¿ì ¸¶Áö¸·³¯ÀÇ ¿äÀÏ¿¡¼­ ´ÙÀ½´Þ ±îÁö °ø¹éÀ» ¸¸µé¾î¾ß ÇÔ Calendar sDay = Calendar.getInstance(); // ½ÃÀÛÀÏ Calendar eDay = Calendar.getInstance(); // ³¡ÀÏ Calendar cDay = Calendar.getInstance(); // ´ÜÃâ·Â¿¡¼­ ¸¶Áö¸· ³¯ ÈÄ °ø¹éÀ» À§ÇÑ °´Ã¼ int [] i = new int[13]; // 1~12 ¿ù±îÁöÀÇ ¹è¿­. 12·Î ÁöÁ¤ÇÒ°æ¿ì À妽º Áõ°¡½Ã À妽º ¹üÀ§ÃÊ°ú for(int a=0 ; a<13 ; a++) i[a]=1; // °¢ ¿ùÀÇ ½ÃÀÛÀÏÀÎ 1ÀÏ·Î ÃʱâÈ­ for(; month<=12 ; month+=cols){ // °¢ ´Ü¼ö¸¸Å­ Áõ°¡ ½ÃÅ°´Â µ¿¾È ¹Ýº¹µÊ. System.out.println(); for(int mon=month ; mon12) break; //12¿ù ÀÌ»ó Ãâ·Â½Ã break System.out.print(" " + year + ". " + ((mon < 10)? "0"+mon : ""+mon) + ". "); } System.out.println(); // ÀÌ ¹Ýº¹¹®µéÀº ´ÜÀÌ ½ÃÀÛÇÒ¶§ Ãâ·ÂµÇ¹Ç·Î month+=cols ¿¡ µû¶ó º¯ÇØ¾ß ÇÔ. for(int mon=month ; mon12) break; System.out.print(" ==================== "); } System.out.println(); for(int mon=month ; mon12) break; System.out.print(" SU MO TU WE TH FR SA "); } for(int a = 0, count=0 ; a <12/cols ; a++){ // a, b ´Â Áßøfor¹®ÀÇ ¿Ü°ûºÎ for(int b = 1 ; b12) break; sDay.set(year, mon-1, 1); // ³â Ãâ·Â°ú ¸¶Âù°¡Áö·Î ¹Ýº¹ µÉ¶§¸¶´Ù Àç¼³Á¤À» ÇØÁÜ. eDay.set(year, mon, 1); eDay.add(Calendar.DAY_OF_MONTH, -1); START_DAY_OF_WEEK = sDay.get(Calendar.DAY_OF_WEEK); END_DAY = eDay.get(Calendar.DAY_OF_MONTH); cDay.set(year, mon-1, END_DAY); END_DAY_OF_WEEK = cDay.get(Calendar.DAY_OF_WEEK); if(mon%cols!=1) System.out.print(" "); // °¢ ´Þ¸¶´Ù ¿·À¸·Î Ãâ·ÂµÉ ¶§ ÇÑÄ­¾¿ ¶ç¿ö¼­ Ãâ·Â int n=1; // ³¯Â¥¸¦ ¿·À¸·Î ÂïÀ¸¸é¼­ Ä«¿îÆ® µÇ´Â º¯¼ö. if(i[mon]==1)n=START_DAY_OF_WEEK; // 1ÀÏÀ̸é 1ÀÏ¿¡ ÇØ´çµÇ´Â ¿äÀϺÎÅÍ Ä«¿îÆ® ÇØ¾ß ÇÑ´Ù. if(count==5&&mon%cols!=1) // ´Ü ½ÃÀÛ´ÞÀÌ ¾Æ´Ñ ´Þ¿¡¼­ 6¶óÀÎÀ» Ãâ·ÂÇØ¾ß ÇÒ °æ¿ì for(int space=DAY_CNT ; space < 7; space++) System.out.print(" "); //6¶óÀÎ ³¯Â¥ Ãâ·Â Àü¿¡ °ø¹é ¸¸µë. // DAY_CNT ´Â ¾Æ·¡ ¹Ýº¹¹® ³» ÁÖ¼® ÂüÁ¶ for( DAY_CNT=0 ; i[mon] <= END_DAY ; i[mon]++, n++,DAY_CNT++) { // ³¯Â¥¸¦ Âï´Â ¹Ýº¹¹®. if(i[mon]==1) // ¸¸¾à 1ÀÏÀ̸é 1ÀÏ ¾ÕÀÇ ºñ´Â ¿äÀϸ¸Å­ °ø¹éÀ» ¸¸µç´Ù. for(int space=1; space < START_DAY_OF_WEEK; space++) System.out.print(" "); System.out.print((i[mon] < 10)? " "+i[mon] : " "+i[mon] ); // ³¯Â¥ Ãâ·ÂºÎ if(count==5&&i[mon]> "); String str; // ¹®ÀÚ¿­ ÀԷ¹ޱâ À§ÇÑ º¯¼ö BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); // ÀԷ¹ޱâ À§ÇÑ °´Ã¼ »ý¼º str = input.readLine(); // str¿¡ ¹®ÀÚ¿­ ÀԷ¹ÞÀ½. sel = Integer.parseInt(str); // ÀԷ¹ÞÀº ¹®ÀÚ¿­À» Á¤¼öÇüÀ¸·Î º¯È¯ Cal cal; Calendar calendar; //ÇÊ¿äÇÑ °´Ã¼µéÀ» ¿ì¼± ¼±¾ðÇØµÒ int y, m=1, d=1; // ³â, ¿ù, ÀÏ. ³âµµ¸¸ ÇÊ¿ä ÇÑ°æ¿ì¿¡ month ¿Í day ´Â 1ÀÌ¸é µÈ´Ù. int cols ; // ´Ü Ãâ·ÂÀ» À§ÇÑ º¯¼ö. System.out.println(); switch(sel){ case 1: // ¿É¼Ç¿¡ µû¶ó 1, 2, 3, 4·Î ³ª´¶´Ù. System.out.print("input YEAR : "); str = input.readLine(); // °°Àº ¹æ¹ýÀ¸·Î Á¤¼ö ÀԷ¹ÞÀ½. y = Integer.parseInt(str); cal = new Cal(y,m,d); // °´Ã¼ »ý¼º (º¯¼öÀü´ÞÇϸ鼭 »ý¼ºÀÚÈ£Ãâ) cal.calen(y);break; // ¸Þ¼Òµå È£Ãâ. ¿À¹ö·ÎµùÀ» ÀÌ¿ëÇÏ¿´±â ¶§¹®¿¡ y / y,m / y,m,d ÀÇ 3°¡Áö°¡ ÀÖ´Ù. case 2: System.out.print("input YEAR : "); str = input.readLine(); // °°Àº ¹æ¹ýÀ¸·Î Á¤¼ö ÀԷ¹ÞÀ½. y = Integer.parseInt(str); System.out.print("input YEAR : "); str = input.readLine(); m = Integer.parseInt(str); // ¿ùÀÌ ÇÊ¿äÇÏ¸é ¿ùÀ» ÀԷ¹ÞÀ½. cal = new Cal(y,m,d); cal.calen(y,m);break; case 3: System.out.print("input YEAR : "); str = input.readLine(); // °°Àº ¹æ¹ýÀ¸·Î Á¤¼ö ÀԷ¹ÞÀ½. y = Integer.parseInt(str); System.out.print("input MONTH : "); str = input.readLine(); m = Integer.parseInt(str); System.out.print("input DAY : "); str = input.readLine(); d = Integer.parseInt(str); // ¿äÀÏ¿¡´Â ³¯Â¥±îÁö ÇÊ¿äÇϹǷΠÀԷ¹ÞÀ½. cal = new Cal(y,m,d); cal.calen(y,m,d);break; case 4: System.out.print("input YEAR : "); str = input.readLine(); // °°Àº ¹æ¹ýÀ¸·Î Á¤¼ö ÀԷ¹ÞÀ½. y = Integer.parseInt(str); System.out.print("input COLUMN : "); str = input.readLine(); cols = Integer.parseInt(str); // ´Ü¼ö ÀÔ·Â cal = new Cal(y,m,d); // ´Ü¼ö Ãâ·Â¿¡´Â ¿ù, ÀÏ ÀÌ 1À̾î¾ß ÇϹǷΠÃʱⰪ Àü´Þ. if(cols>12) cols=12; if(cols<1) break;// 1 <= cols <= 12 °¡ ¾Æ´Ò ¶§ ´Ü¼ö ó¸® ºÎ. if(cols==1) {cal.calen(y);break;} // 1´Ü Ãâ·ÂÀÌ¸é ±×³É ³â Ãâ·Â cal.dan(y,cols);break; case 5: calendar = Calendar.getInstance(); // ¿ÃÇØÀÇ ³âÃâ·Â y = calendar.get(Calendar.YEAR); cal = new Cal(y,m,d); cal.calen(y);break; case 6: calendar = Calendar.getInstance(); // À̹ø´Þ Ãâ·Â y = calendar.get(Calendar.YEAR); // ¿À´ÃÀÇ ³â,¿ù m = calendar.get(Calendar.MONTH)+1; cal = new Cal(y,m,d); cal.calen(y,m);break; case 7: calendar = Calendar.getInstance(); y = calendar.get(Calendar.YEAR); // ¿À´ÃÀÇ ³â,¿ù,ÀÏ,¿äÀÏ m = calendar.get(Calendar.MONTH)+1; d = calendar.get(Calendar.DATE); cal = new Cal(y,m,d); cal.calen(y,m,d);break; case 8: calendar = Calendar.getInstance(); y = calendar.get(Calendar.YEAR); System.out.print("input COLUMN : "); str = input.readLine(); cols = Integer.parseInt(str); // ´Ü¼ö ÀÔ·Â cal = new Cal(y,m,d); // ´Ü¼ö Ãâ·Â¿¡´Â ¿ù, ÀÏ ÀÌ 1À̾î¾ß ÇϹǷΠÃʱⰪ Àü´Þ. if(cols>12) cols=12; if(cols<1) break;// 1 <= cols <= 12 °¡ ¾Æ´Ò ¶§ ´Ü¼ö ó¸® ºÎ. if(cols==1) {cal.calen(y);break;} // 1´Ü Ãâ·ÂÀÌ¸é ±×³É ³â Ãâ·Â cal.dan(y,cols);break; case 0: System.out.println("!! EXIT PROGRAM.");break; default : System.out.println("!! option is fault."); // ÇØ´ç¸Þ´º°¡ ¾øÀ¸¸é À߸ø¼öÇà } } } }