<?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=Self-describingSequence%2F%ED%99%A9%EC%9E%AC%EC%84%A0</id>
	<title>Self-describingSequence/황재선 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=Self-describingSequence%2F%ED%99%A9%EC%9E%AC%EC%84%A0"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Self-describingSequence/%ED%99%A9%EC%9E%AC%EC%84%A0&amp;action=history"/>
	<updated>2026-05-14T18:01:15Z</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=Self-describingSequence/%ED%99%A9%EC%9E%AC%EC%84%A0&amp;diff=38989&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:28, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Self-describingSequence/%ED%99%A9%EC%9E%AC%EC%84%A0&amp;diff=38989&amp;oldid=prev"/>
		<updated>2021-02-07T05:28:01Z</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;2006.1.9&lt;br /&gt;
&lt;br /&gt;
== 쓰레드 ==&lt;br /&gt;
* 구현은 했는데 close form으로 식을 못 만들겠다;&lt;br /&gt;
* 메모리 사용을 줄이기 위한 방안이 필요하다. 또한 입력값에 맞는 배열 크기 할당이 요구된다. 여기는 입력 값에 관계없이 최대 입력 값에 맞는 배열 크기를 할당하였다.&lt;br /&gt;
&lt;br /&gt;
== 소스 코드 ==&lt;br /&gt;
 import java.util.Scanner;&lt;br /&gt;
 &lt;br /&gt;
 public class DescribingSequence {&lt;br /&gt;
 	private final int MAX = 673366;&lt;br /&gt;
 	&lt;br /&gt;
 	public int readNumber() {&lt;br /&gt;
 		return new Scanner(System.in).nextInt();&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 	public int getSequence(int n) {&lt;br /&gt;
 		if (n == 1) {&lt;br /&gt;
 			return 1;&lt;br /&gt;
 		}&lt;br /&gt;
 		else if (n == 2 || n == 3) {&lt;br /&gt;
 			return 2;&lt;br /&gt;
 		}&lt;br /&gt;
 		&lt;br /&gt;
 		int[] describing = new int[MAX + 1];&lt;br /&gt;
 		&lt;br /&gt;
 		describing[3] = 2;&lt;br /&gt;
 		&lt;br /&gt;
 		int input = 4;&lt;br /&gt;
 		int output = 3;&lt;br /&gt;
 		int numRepeat;&lt;br /&gt;
 		&lt;br /&gt;
 		while(true) {&lt;br /&gt;
 			numRepeat = describing[output];&lt;br /&gt;
 			&lt;br /&gt;
 			for(int i = 0; i &amp;amp;lt; numRepeat; i++) {&lt;br /&gt;
 				if (input == n) {&lt;br /&gt;
 					return output;&lt;br /&gt;
 				}&lt;br /&gt;
 				&lt;br /&gt;
 				if (input &amp;amp;gt; MAX) {&lt;br /&gt;
 					input++;&lt;br /&gt;
 				}&lt;br /&gt;
 				else {&lt;br /&gt;
 					describing[input++] = output;&lt;br /&gt;
 				}				&lt;br /&gt;
 			}&lt;br /&gt;
 			output++;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	public void printValue(int value) {&lt;br /&gt;
 		System.out.println(value);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	public static void main(String[] args) {&lt;br /&gt;
 		DescribingSequence ds = new DescribingSequence();&lt;br /&gt;
 		while(true) {&lt;br /&gt;
 			int n = ds.readNumber();&lt;br /&gt;
 			if (n == 0) {&lt;br /&gt;
 				break;&lt;br /&gt;
 			}&lt;br /&gt;
 			int value = ds.getSequence(n);&lt;br /&gt;
 			ds.printValue(value);			&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 import junit.framework.TestCase;&lt;br /&gt;
 &lt;br /&gt;
 public class TestDescribingSequence extends TestCase {&lt;br /&gt;
 	public void testBasic() {&lt;br /&gt;
 		DescribingSequence ds = new DescribingSequence();&lt;br /&gt;
 		assertEquals(1, ds.getSequence(1));&lt;br /&gt;
 		assertEquals(2, ds.getSequence(2));&lt;br /&gt;
 		assertEquals(2, ds.getSequence(3));&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	public void testAfter() {&lt;br /&gt;
 		DescribingSequence ds = new DescribingSequence();&lt;br /&gt;
 		assertEquals(3, ds.getSequence(4));&lt;br /&gt;
 		assertEquals(3, ds.getSequence(5));&lt;br /&gt;
 		assertEquals(4, ds.getSequence(6));&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	public void testSample() {&lt;br /&gt;
 		DescribingSequence ds = new DescribingSequence();&lt;br /&gt;
 		assertEquals(21, ds.getSequence(100));&lt;br /&gt;
 		assertEquals(356, ds.getSequence(9999));&lt;br /&gt;
 		assertEquals(1684, ds.getSequence(123456));&lt;br /&gt;
 &lt;br /&gt;
 		assertEquals(438744, ds.getSequence(1000000000));&lt;br /&gt;
 		assertEquals(673365, ds.getSequence(2000000000));&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Self-describingSequence]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>