~cpp
import sys
class JollyJumper:
def statementForSeries( self, aSeries ):
if self.checkJolly( aSet = self.getSetOfDiffence( aSeries[1:] ),
aN = aSeries[0] ):
return "Jolly"
return "Not Jolly"
def checkJolly( self, aSet, aN ):
for i in range( 1, aN ):
if i not in aSet:
return False
return True
def getSetOfDiffence( self, aSeries ):
resultSet = {}
for i in range( len(aSeries) - 1 ):
resultSet[abs(aSeries[i + 1]-aSeries[i])] = "exist"
return resultSet
def run():
while True:
inputString = sys.stdin.readline()
seriesChar = inputString.split()
if seriesChar[0] is '0':
break
seriesInt = []
for char in seriesChar:
seriesInt.append( int(char) )
print JollyJumper().statementForSeries( seriesInt )
run = staticmethod(run)
#########################################################################
import unittest
class JollyJumperTestCase(unittest.TestCase):
def setUp(self):
self.jj = JollyJumper()
def test12(self):
self.assertEquals("Jolly",
self.jj.statementForSeries( aSeries = [2,6,7] ) )
def test13(self):
self.assertEquals("Not Jolly",
self.jj.statementForSeries( aSeries = [2,1,3] ) )
def testCheckJolly(self):
self.assertEquals(True,
self.jj.checkJolly(
aSet = {3:"exist", 2:"exist", 1:"exist"},
aN = 4) )
self.assertEquals(True,
self.jj.checkJolly(
aSet = {1:"exist"},
aN = 2) )
def testGetSetOfDiffernce(self):
self.assertEquals( str(self.jj.getSetOfDiffence( aSeries = [5,6,8] )),
str({2:"exist", 1:"exist"}) )
self.assertEquals( str(self.jj.getSetOfDiffence( aSeries = [7,6,4] )),
str({2:"exist", 1:"exist"}) )
def testSample(self):
series = [4, 1,4,2,3]
self.assertEquals("Jolly", self.jj.statementForSeries( series ) )
series = [4, 5, 1, 4, 2, 3]
self.assertEquals("Jolly", self.jj.statementForSeries( series ) )
series = [5, 5, 1, 4, 2, -1, 6]
self.assertEquals("Not Jolly", self.jj.statementForSeries( series ) )
#########################################################################
if __name__ == '__main__':
## unittest.main()
JollyJumper.run()
Thread ¶
์ฒ์์ ๋ฆฌ์คํธ์ ์ฐจ๋ฅผ ์ง์ด๋ฃ์ ํ ์ ๋ ฌํ๋ ค ํ๋ค๊ฐ ์งํฉ ๊ฐ๋
์ด ๋ ์ฌ๋ผ ๊ทธ ์ชฝ์ผ๋ก ํด๊ฒฐํ๋ค. statementForSeries๋ฉ์๋ ๋ถ๋ถ์ ์๋ CheckJolly๋ฉ์๋๋ฅผ ๋ฐ๋ก ํ
์คํธํ๋ฉด์ ExtractMethod๋ฅผ ํ๊ฒ ๋์๊ณ , ์ฐจ๊ฐ ์์์ธ ๊ฒฝ์ฐ๋ ํ
์คํธ๋ฅผ ํตํด ์๊ฒ๋์๋ค. ๋ณดํญ์ด ์์ง ์ข์ง๋ง ์ ์ ์งํํ ๋ฌธ์ ์ด๋ค.
๋ฐ๋ ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ์์ ํ๋๋ฐ 1๋ถ 30์ด๊ฐ ๊ฑธ๋ ธ๋ค. ํ์ด์ฌ์ด ์๋นํ ์ ์ฐํ๋ค๋ ๋๋์ด ๊ฐํ๊ฒ ๋ค์๋ค. ๋ฌ๋๋ถ๋ถ์ ๋ง์์ ์ ๋ ๋ค.
์ค์ ์ฝ๋ฉ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ์๊ฐํ๋ ์๊ฐ์ ๊ฐ์ง๋ค. ์๊ฐํ๋ํ๋ก๊ทธ๋๋ฐ์์ ์ฝ์ ๊ฒ์ผ๋ฅธ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ ํ์๊ฐ ์๊ฒ ๋ค. ๊ฐ๋ฅํ ๋์์ธ ๊ณต๊ฐ์ 5๋ถ์ด๋ผ๋ ํ๊ตฌํ๊ณ ๊ทธ ๊ฐ์ด๋ฐ ๊ฐ์ฅ ๊ด์ฐฎ์ ๋์ผ๋ก ์๋ํด๋ด์ผ๊ฒ ๋ค. --Leonardong










