U E D R , A S I H C RSS

만년달력/��

소�

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");
	}
}
----
작성�: 임�� Yggdrasil
----
만년달력
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:26
Processing time 0.0081 sec