소ê°� ¶
2학년때 ë�°ë¸”ìŠ¤ìº í”„ 때 못 풀다가 버그 ìƒ�겨서 í�¬ê¸°í•œ ë¬¸ì œì˜€ëŠ”ë�°... 얼마 ì „ì—� ìž�ë°” ìˆ™ì œë¡œ 비슷하지만 좀 ë�” 쉬운 ë¬¸ì œê°€ 나왔었는ë�°, 그걸 í’€ê³ ë‚˜ë‹ˆ ë‚´ê°€ 그때 ì�´ê±¸ 왜 못 풀었ì�„까...하는 ìƒ�ê°�ì�´ 드는군요. ë°‘ì�˜ 소스는 ë¦¬íŒ©í† ë§� í• í•„ìš”ê°€ 있긴 하지만요.
그런ë�° ìž�ë°” ì±… 다ì�Œìž¥ì—� ë§Œë…„ë‹¬ë ¥ 구하는 소스가 ë˜� 있었군요. ì�´ê±° í’€ê³ ë‚˜ì„œ ì•Œì•„ë²„ë ¸ë„¤ìš”.ã…Žã…Ž
그런ë�° ìž�ë°” ì±… 다ì�Œìž¥ì—� ë§Œë…„ë‹¬ë ¥ 구하는 소스가 ë˜� 있었군요. ì�´ê±° í’€ê³ ë‚˜ì„œ ì•Œì•„ë²„ë ¸ë„¤ìš”.ã…Žã…Ž
코드 ¶
import javax.swing.*;
public class EternalCalendar
{
public static void main(String []args)
{
int[] daysOfMonth={31, 28, 31, 30, 31,30, 31, 31, 30, 31, 30, 31};//ê°� 달ì�˜ ë‚ ì§œìˆ˜
String[] nameOfday={"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};//� 요�� �름
int dYear=Integer.parseInt(JOptionPane.showInputDialog(null, "ì•Œê³ ì‹¶ì�€ ì—°ë�„ ìž…ë ¥:", "ë§Œë…„ë‹¬ë ¥", JOptionPane.QUESTION_MESSAGE));
int dMonth=Integer.parseInt(JOptionPane.showInputDialog(null, "ì•Œê³ ì‹¶ì�€ ì›” ìž…ë ¥:", "ë§Œë…„ë‹¬ë ¥", JOptionPane.QUESTION_MESSAGE));
//ì•Œê³ ì‹¶ì�€ ë…„/ì›”ì�„ ìž…ë ¥ë°›ì�Œ
int totalDays=0;//ê·¸ 해까지ì�˜ ì´� ë‚ ì§œìˆ˜
for(int i=1;i<dYear;i++)
{
if((i%4==0 && i%100!=0) || i%400==0)
totalDays+=366;
else
totalDays+=365;
}//ê·¸ ì „í•´ê¹Œì§€ì�˜ ì´� ë‚ ì§œìˆ˜
if((dYear%4==0 && dYear%100!=0) || dYear%400==0)
daysOfMonth[1]=29;//ìž…ë ¥ë°›ì�€ í•´ì�˜ 2ì›”ì—� 윤달ì�´ 있는지 계산
for(int i=1;i<dMonth;i++)//해당하는 í•´ì�˜ ê·¸ ì „ë‹¬ê¹Œì§€ì�˜ ë‚ ì§œìˆ˜
totalDays+=daysOfMonth[i-1];
System.out.println(dYear+"ë…„ "+dMonth+"ì›”ì�˜ ë‹¬ë ¥");
for(int i=0;i<7;i++)//ë‹¬ë ¥ì�˜ ìƒ�단ì—� ìš”ì�¼ ì¶œë ¥
System.out.print(nameOfday[i]+"\t");
System.out.print("\n");
for(int i=0;i<(totalDays+1)%7;i++)
System.out.print("\t");//해당 달ì�˜ ì²«ë‚ ì�˜ ìš”ì�¼ ì„¤ì •. +1ì�¸ ì�´ìœ 는 1ë…„ 1ì›” 1ì�¼ì�€ ì�¼ìš”ì�¼
for(int i=1;i<daysOfMonth[dMonth-1]+1;i++)
{//1ì�¼ë¶€í„° 마지막 ë‚ ì§œê¹Œì§€ ì°�ì�Œ
System.out.print(i+"\t");
if((i+totalDays+1)%7==0)//한 줄� 7개만 들어가�� 줄바꿈(최초� 빈칸� 계산)
System.out.print("\n");
}
System.out.print("\n");
}
}










