<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EB%A7%8C%EB%85%84%EB%8B%AC%EB%A0%A5%2F%EC%9D%B8%EC%88%98</id>
	<title>만년달력/인수 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EB%A7%8C%EB%85%84%EB%8B%AC%EB%A0%A5%2F%EC%9D%B8%EC%88%98"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EB%A7%8C%EB%85%84%EB%8B%AC%EB%A0%A5/%EC%9D%B8%EC%88%98&amp;action=history"/>
	<updated>2026-05-15T20:08:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=%EB%A7%8C%EB%85%84%EB%8B%AC%EB%A0%A5/%EC%9D%B8%EC%88%98&amp;diff=85568&amp;oldid=prev</id>
		<title>Maintenance script: Repair batch-0005 pages from live compare</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EB%A7%8C%EB%85%84%EB%8B%AC%EB%A0%A5/%EC%9D%B8%EC%88%98&amp;diff=85568&amp;oldid=prev"/>
		<updated>2026-03-27T00:44:57Z</updated>

		<summary type="html">&lt;p&gt;Repair batch-0005 pages from live compare&lt;/p&gt;
&lt;a href=&quot;https://mediawiki.zeropage.org/index.php?title=%EB%A7%8C%EB%85%84%EB%8B%AC%EB%A0%A5/%EC%9D%B8%EC%88%98&amp;amp;diff=85568&amp;amp;oldid=50166&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=%EB%A7%8C%EB%85%84%EB%8B%AC%EB%A0%A5/%EC%9D%B8%EC%88%98&amp;diff=50166&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:29, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EB%A7%8C%EB%85%84%EB%8B%AC%EB%A0%A5/%EC%9D%B8%EC%88%98&amp;diff=50166&amp;oldid=prev"/>
		<updated>2021-02-07T05:29:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== Calendar.java ===&lt;br /&gt;
 public class Calendar {&lt;br /&gt;
 	static int DAYS_PER_MONTH[] = {31,28,31,30,31,30,31,31,30,31,30,31};&lt;br /&gt;
 	int year, month;&lt;br /&gt;
 	public Calendar(int year, int month) {&lt;br /&gt;
 		set(year, month);&lt;br /&gt;
 	}&lt;br /&gt;
 	public void set(int year, int month) {&lt;br /&gt;
 		this.year = year;&lt;br /&gt;
 		this.month = month;&lt;br /&gt;
 		DAYS_PER_MONTH[1] = isLeapYear(this.year) ? 29 : 28; &lt;br /&gt;
 	}&lt;br /&gt;
 	protected int getNumOfDays() {&lt;br /&gt;
 		return DAYS_PER_MONTH[month - 1];&lt;br /&gt;
 	}&lt;br /&gt;
 	public int[] getCalendar() {&lt;br /&gt;
 		int ret[] = new int[42];&lt;br /&gt;
 		int start = getMonthStartPoint();&lt;br /&gt;
 		for(int i = start ; i &amp;amp;lt; getNumOfDays() + start ; ++i)&lt;br /&gt;
 			ret[i] = i - start + 1;&lt;br /&gt;
 		return ret;&lt;br /&gt;
 	}&lt;br /&gt;
 	protected int getNumOfLeapYears() {&lt;br /&gt;
 		int ret = 0;&lt;br /&gt;
 		for(int i = 1 ; i &amp;amp;lt; year ; ++i)&lt;br /&gt;
 			if( isLeapYear(i) ) ++ret;&lt;br /&gt;
 		return ret;&lt;br /&gt;
 	}&lt;br /&gt;
 	protected int getMonthStartPoint() {&lt;br /&gt;
 		int ret = year + getNumOfLeapYears();&lt;br /&gt;
 		for(int i = 0 ; i &amp;amp;lt; month - 1 ; ++i)&lt;br /&gt;
 			ret += DAYS_PER_MONTH[i];&lt;br /&gt;
 		return ret % 7;&lt;br /&gt;
 	}&lt;br /&gt;
 	protected boolean isLeapYear() {&lt;br /&gt;
 		return isLeapYear(this.year);&lt;br /&gt;
 	}&lt;br /&gt;
 	protected boolean isLeapYear(int year) {&lt;br /&gt;
 		return (year % 4 == 0 &amp;amp;amp;&amp;amp;amp; year % 100 != 0) || year % 400 == 0;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== CalendarTestCase.java ===&lt;br /&gt;
 import junit.framework.TestCase;&lt;br /&gt;
 &lt;br /&gt;
 public class CalendarTestCaseTest extends TestCase {							&lt;br /&gt;
 	Calendar calendar = new Calendar(1,1);&lt;br /&gt;
 &lt;br /&gt;
 	public CalendarTestCaseTest(String arg) {&lt;br /&gt;
 		super(arg);&lt;br /&gt;
 	}&lt;br /&gt;
 	private int[] getExpectedCalendar(int start) {&lt;br /&gt;
 		int ret[] = new int[42];&lt;br /&gt;
 		for(int i = start ; i &amp;amp;lt; calendar.getNumOfDays() + start ; ++i)&lt;br /&gt;
 			ret[i] = i - start + 1;&lt;br /&gt;
 		return ret;		&lt;br /&gt;
 	}&lt;br /&gt;
 	private void assertEqualsArray(int [] expected) {&lt;br /&gt;
 		int real[] = calendar.getCalendar();		&lt;br /&gt;
 		for(int i = 0 ; i &amp;amp;lt; 42 ; ++i)		&lt;br /&gt;
 			assertEquals( expected[i], real[i] );		&lt;br /&gt;
 	}&lt;br /&gt;
 	public void test1Year() {&lt;br /&gt;
 		int expectedSet[] = {1,4,4,0,2,5,0,3,6,1,4,6};&lt;br /&gt;
 		for(int i = 0 ; i &amp;amp;lt; expectedSet.length ; ++i) {&lt;br /&gt;
 			calendar.set(1, i + 1);&lt;br /&gt;
 			int expected[] = getExpectedCalendar(expectedSet[i]);&lt;br /&gt;
 			assertEqualsArray(expected);&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	public void test2Year() {&lt;br /&gt;
 		int monthSet[] = {1,2,12};&lt;br /&gt;
 		int expectedSet[] = {2,5,0};&lt;br /&gt;
 		for(int i = 0 ; i &amp;amp;lt; monthSet.length ; ++i) {&lt;br /&gt;
 			calendar.set(2, monthSet[i]);&lt;br /&gt;
 			assertEqualsArray( getExpectedCalendar(expectedSet[i]) );			&lt;br /&gt;
 		}			&lt;br /&gt;
 	}&lt;br /&gt;
 	public void test4Year() {&lt;br /&gt;
 		int expectedSet[] = {4,0,1,4,6,2,4,0,3,5,1,3};&lt;br /&gt;
 		for(int i = 0 ; i &amp;amp;lt; expectedSet.length ; ++i) {&lt;br /&gt;
 			calendar.set(4, i + 1);&lt;br /&gt;
 			int expected[] = getExpectedCalendar(expectedSet[i]);&lt;br /&gt;
 			assertEqualsArray(expected);&lt;br /&gt;
 		}			&lt;br /&gt;
 	}&lt;br /&gt;
 	public void test2003Year() {&lt;br /&gt;
 		int expectedSet[] = {3,6,6,2,4,0,2,5,1,3,6,1};&lt;br /&gt;
 		for(int i = 0 ; i &amp;amp;lt; expectedSet.length ; ++i) {&lt;br /&gt;
 			calendar.set(2003, i + 1);&lt;br /&gt;
 			int expected[] = getExpectedCalendar(expectedSet[i]);&lt;br /&gt;
 			assertEqualsArray(expected);&lt;br /&gt;
 		}			&lt;br /&gt;
 	}&lt;br /&gt;
 	public void testMonthStartPoint() {&lt;br /&gt;
 		int monthSet[] = {1,2,8};&lt;br /&gt;
 		int expectedSet[] = {1,4,3};&lt;br /&gt;
 		for(int i = 0 ; i &amp;amp;lt; monthSet.length ; ++i) {&lt;br /&gt;
 			calendar.set(1, monthSet[i]);&lt;br /&gt;
 			assertEquals(expectedSet[i], calendar.getMonthStartPoint() );&lt;br /&gt;
 		}	&lt;br /&gt;
 	}&lt;br /&gt;
 	public void testLeapYear() {&lt;br /&gt;
 		calendar.set(2000, 1);&lt;br /&gt;
 		assertEquals( true, calendar.isLeapYear() );&lt;br /&gt;
 		calendar.set(1999, 1);		&lt;br /&gt;
 		assertEquals( false, calendar.isLeapYear() );&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== CalendarFrame.java for GUI ===&lt;br /&gt;
 import java.awt.*;&lt;br /&gt;
 import java.awt.event.*;&lt;br /&gt;
 import javax.swing.*;&lt;br /&gt;
 &lt;br /&gt;
 public class CalendarFrame extends JFrame {&lt;br /&gt;
 &lt;br /&gt;
 	class CalendarPanel extends JPanel {&lt;br /&gt;
 		JFrame parent;&lt;br /&gt;
 		JButton dayUnit[][] = new JButton[6][7];		&lt;br /&gt;
 		Calendar calendar;&lt;br /&gt;
 		public CalendarPanel() {&lt;br /&gt;
 			getContentPane().setLayout( new GridLayout(5,6) );&lt;br /&gt;
 			for(int i = 0 ; i &amp;amp;lt; 6 ; ++i) {&lt;br /&gt;
 				for(int j = 0 ; j &amp;amp;lt; 7 ; ++j) {&lt;br /&gt;
 					dayUnit[i][j] = new JButton(&amp;quot;    &amp;quot;);&lt;br /&gt;
 					dayUnit[i][j].setBackground(Color.WHITE);&lt;br /&gt;
 					add(dayUnit[i][j]);&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 		public void set(int year, int month) {&lt;br /&gt;
 			calendar = new Calendar(year, month);&lt;br /&gt;
 			int monthArr[] = calendar.getCalendar();&lt;br /&gt;
 			for(int i = 0 ; i &amp;amp;lt; 6 ; ++i) {&lt;br /&gt;
 				for(int j = 0 ; j &amp;amp;lt; 7 ; ++j) {&lt;br /&gt;
 					if( monthArr[i * 7 + j] &amp;amp;gt; 0 &amp;amp;amp;&amp;amp;amp; monthArr[i * 7 + j] &amp;amp;lt; 10)&lt;br /&gt;
 						dayUnit[i][j].setText( &amp;quot;  &amp;quot; + Integer.toString(monthArr[i * 7 + j]) );&lt;br /&gt;
 					else if( monthArr[i * 7 + j] &amp;amp;gt; 0 &amp;amp;amp;&amp;amp;amp; monthArr[i * 7 + j] &amp;amp;gt;= 10)&lt;br /&gt;
 						dayUnit[i][j].setText( Integer.toString(monthArr[i * 7 + j]) );&lt;br /&gt;
 					else&lt;br /&gt;
 						dayUnit[i][j].setText( &amp;quot;    &amp;quot; );&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	class InputPanel extends JPanel {&lt;br /&gt;
 		JFrame parent;&lt;br /&gt;
 		JTextField yearField = new JTextField();&lt;br /&gt;
 		JTextField monthField = new JTextField();&lt;br /&gt;
 		JButton submit = new JButton(&amp;quot;보기&amp;quot;);&lt;br /&gt;
 		int year, month;&lt;br /&gt;
 		public InputPanel() {&lt;br /&gt;
 			setLayout( new GridLayout(1,3) );&lt;br /&gt;
 			add(yearField);							&lt;br /&gt;
 			add(monthField);&lt;br /&gt;
 			add(submit);&lt;br /&gt;
 			submit.addActionListener( new SubmitListener() );&lt;br /&gt;
 		}&lt;br /&gt;
 		&lt;br /&gt;
 		class SubmitListener implements ActionListener {&lt;br /&gt;
 			public void actionPerformed(ActionEvent ev) {&lt;br /&gt;
 				year = Integer.parseInt( yearField.getText() );	&lt;br /&gt;
 				month = Integer.parseInt( monthField.getText() );&lt;br /&gt;
 				if( year &amp;amp;gt; 0 &amp;amp;amp;&amp;amp;amp; month &amp;amp;gt; 0 )&lt;br /&gt;
 					calendarPanel.set(year, month);&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	InputPanel inputPanel = new InputPanel();&lt;br /&gt;
 	CalendarPanel calendarPanel = new CalendarPanel();&lt;br /&gt;
 &lt;br /&gt;
 	public CalendarFrame(String arg) {&lt;br /&gt;
 		super(arg);&lt;br /&gt;
 		getContentPane().setLayout( new BorderLayout() );&lt;br /&gt;
 		getContentPane().add(inputPanel, BorderLayout.NORTH);		&lt;br /&gt;
 		getContentPane().add(calendarPanel, BorderLayout.CENTER);&lt;br /&gt;
 		setResizable(false);&lt;br /&gt;
 		setSize(400,260);&lt;br /&gt;
 		setVisible(true);&lt;br /&gt;
 	}	&lt;br /&gt;
 &lt;br /&gt;
 	public static void main(String[] args) {&lt;br /&gt;
 		new CalendarFrame(&amp;quot;만년달력&amp;quot;);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>