~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