<?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=3N%2B1Problem%2F1002_2</id>
	<title>3N+1Problem/1002 2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=3N%2B1Problem%2F1002_2"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=3N%2B1Problem/1002_2&amp;action=history"/>
	<updated>2026-05-14T17:22:45Z</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=3N%2B1Problem/1002_2&amp;diff=83170&amp;oldid=prev</id>
		<title>Maintenance script: Repair MoniWiki formatting after migration</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=3N%2B1Problem/1002_2&amp;diff=83170&amp;oldid=prev"/>
		<updated>2026-03-26T14:01:35Z</updated>

		<summary type="html">&lt;p&gt;Repair MoniWiki formatting after migration&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:01, 26 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l72&quot;&gt;Line 72:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--&amp;amp;#91;1002&amp;amp;#93;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--&amp;amp;#91;1002&amp;amp;#93;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  http://gochi.pe.kr/upload/img/code/3npuls1problem.jpg  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  http://gochi.pe.kr/upload/img/code/3npuls1problem.jpg &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ~cpp CycleLength.value&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ~cpp CycleLength.value&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;와 거의 비슷한 의사코드가 [[이덕준]]의 연습장에도... 무척 반가움. --[[이덕준]]&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;와 거의 비슷한 의사코드가 [[이덕준]]의 연습장에도... 무척 반가움. --[[이덕준]]&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff::1.12:old-26779:rev-83170 --&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=3N%2B1Problem/1002_2&amp;diff=26779&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:22, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=3N%2B1Problem/1002_2&amp;diff=26779&amp;oldid=prev"/>
		<updated>2021-02-07T05:22:15Z</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;=== 접근 ===&lt;br /&gt;
연습장에서 이것저것 적어보기 시도. 처음에는 각 결과 수 간에 무언가 수열이 있을까 해서 적어봄.&lt;br /&gt;
  1 2 8  3 6 9 17  4 20   7 9&lt;br /&gt;
   1 6 -5 3 3 8 -13 17 -13 2&lt;br /&gt;
도저히 수열스럽지 않아서 다시 숫자들 간의 관계를 이리 적어보던중, 지난번의 UglyNumber 에서의 문제접근법(DynamicProgramming)을 해봄. 혹시 앞의 계산값이 뒤의 계산에 이용되지 않을까 생각을 해보다.&lt;br /&gt;
 n 값의 변화&lt;br /&gt;
  1 : 1&lt;br /&gt;
  2 : 2 -&amp;amp;gt; 1&lt;br /&gt;
  3 : 3 -&amp;amp;gt; 10 -&amp;amp;gt; 5 -&amp;amp;gt; 16 -&amp;amp;gt; 8 -&amp;amp;gt; 4 -&amp;amp;gt; 2 -&amp;amp;gt; 1&lt;br /&gt;
  4 : 4 -&amp;amp;gt; 2 -&amp;amp;gt; 1&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
숫자들을 주욱 나열해보면서 해당 n 값 대비 count cycle Length 의 값은 고정적일것이라는 점과, 이 값을 일종의 caching 을 하여 이용할 수 있겠다는 생각이 들다.&lt;br /&gt;
&lt;br /&gt;
연습장에 의사 코딩 5분정도 한 뒤, 바로 코드로 옮기고 실행.&lt;br /&gt;
&lt;br /&gt;
 class CycleLength:&lt;br /&gt;
     def __init__(self):&lt;br /&gt;
         self._cache = {1:1}&lt;br /&gt;
     def createTable(self,i,j):&lt;br /&gt;
         return [self.value(each) for each in range(i,j)]&lt;br /&gt;
     def value(self,n):&lt;br /&gt;
         if self._cache.get(n) is not None: return self._cache.get(n)&lt;br /&gt;
         if n % 2 == 1:&lt;br /&gt;
             self._cache[n] = self.value(3*n+1)+1&lt;br /&gt;
             return self._cache[n]&lt;br /&gt;
         else:&lt;br /&gt;
             self._cache[n] = self.value(n/2)+1&lt;br /&gt;
             return self._cache[n]&lt;br /&gt;
 &lt;br /&gt;
     def maxCycleLengthInRange(self,i,j):&lt;br /&gt;
         #return max(self.createTable(i,j))&lt;br /&gt;
         maxValue=0&lt;br /&gt;
         for each in range(i,j):&lt;br /&gt;
             maxValue = max(maxValue,self.value(each))&lt;br /&gt;
         return maxValue&lt;br /&gt;
 &lt;br /&gt;
 def testOne():&lt;br /&gt;
     r&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; c=CycleLength()&lt;br /&gt;
     &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; [c.value(n) for n in range(1,5)]&lt;br /&gt;
     [1, 2, 8, 3]&lt;br /&gt;
     &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; c.maxCycleLengthInRange(1,10)&lt;br /&gt;
     20&lt;br /&gt;
     &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; c.maxCycleLengthInRange(100,200)&lt;br /&gt;
     125&lt;br /&gt;
     &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; c.maxCycleLengthInRange(201,210)&lt;br /&gt;
     89&lt;br /&gt;
     &amp;amp;gt;&amp;amp;gt;&amp;amp;gt; c.maxCycleLengthInRange(900,1000)&lt;br /&gt;
     174&lt;br /&gt;
     &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 def main():&lt;br /&gt;
     import doctest&lt;br /&gt;
     doctest.testmod()&lt;br /&gt;
 &lt;br /&gt;
 def main2():&lt;br /&gt;
     c=CycleLength()&lt;br /&gt;
     print c.maxCycleLengthInRange(1,999999)&lt;br /&gt;
 &lt;br /&gt;
 if __name__==&amp;quot;__main__&amp;quot;:&lt;br /&gt;
     import time&lt;br /&gt;
     start=time.time()&lt;br /&gt;
     import psyco&lt;br /&gt;
     psyco.bind(main2)&lt;br /&gt;
     main2()&lt;br /&gt;
     end = time.time()&lt;br /&gt;
     print &amp;quot;time :&amp;quot;, end-start&lt;br /&gt;
&lt;br /&gt;
=== 느낀점 ===&lt;br /&gt;
지난번의 문제를 풀었을때 &amp;#039;접근법&amp;#039; 도 같이 생각하여 문제 해결방법을 익힌것이 추후의 문제(결과 상으로는 전혀 다른 알고리즘)의 해결법을 알아내는데 좋은 접근법을 제공해준 것이 느낌이 좋았다. 새 해결책을 떠올리는데 10분이 안걸리고, 비교적 효과적인 알고리즘이 나온 점에서 기분이 좋은 중.&lt;br /&gt;
&lt;br /&gt;
--&amp;amp;#91;1002&amp;amp;#93;&lt;br /&gt;
 http://gochi.pe.kr/upload/img/code/3npuls1problem.jpg &lt;br /&gt;
 &amp;#039;&amp;#039;&lt;br /&gt;
 ~cpp CycleLength.value&lt;br /&gt;
와 거의 비슷한 의사코드가 [[이덕준]]의 연습장에도... 무척 반가움. --[[이덕준]]&amp;#039;&amp;#039;&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>