U E D R , A S I H C RSS

Jolly Jumpers/Leonardong

~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

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:34
Processing time 0.0035 sec