U E D R , A S I H C RSS

Slurpys/신재동

Slurpys/신재동

~cpp 
import unittest

class Slurpys:
    def isSlump(self, string):
        if((len(string) == 0) or\
           (string[0] != 'D' and string[0] != 'E') or\
           (string[1] != 'F') or\
           (string[len(string) - 1] != 'G')):
            return False
        
        for i in range(2, len(string)):
            if(string[i] == 'F'):
                continue
            elif(string[i] == 'G'):
                return True
            else:
                return self.isSlump(string[i:])
        return False

    def isSlimp(self, string):
        if(len(string) == 0 or string[0] != 'A'):
            return False
        if(len(string) == 2 and string == 'AH'):
            return True
        elif(len(string) > 2):
            if(string[1] == 'B' and string[len(string) - 1] == 'C'):
                return self.isSlimp(string[2:len(string)-1])
            elif(string[len(string) - 1] == 'C'):
                return self.isSlump(string[1:len(string)-1])
        return False

    def isSlurpy(self, string):
        slimp = ''
        slump = ''
        if(len(string.split('C')) == 1):
            slimp = 'AH'
            slump = string.split('H')[1]
        elif(len(string.split('C')) >= 2):
            slimp = string.split('C')[0]
            for i in range(len(string.split('C')) - 1):
                slimp += 'C'
            slump = string.split('C')[len(string.split('C')) - 1]
        return self.isSlimp(slimp) and self.isSlump(slump)
    
class SlurpysTestCase(unittest.TestCase):
    def testSlump(self):
        slurpys = Slurpys()
        self.assertEquals(True, slurpys.isSlump('DFG'))
        self.assertEquals(True, slurpys.isSlump('EFG'))
        self.assertEquals(True, slurpys.isSlump('DFFFFFG'))
        self.assertEquals(True, slurpys.isSlump('DFDFDFDFG'))
        self.assertEquals(True, slurpys.isSlump('DFEFFFFFG'))
        
    def testNotSlump(self):
        slurpys = Slurpys()
        self.assertEquals(False, slurpys.isSlump('DFEFF'))
        self.assertEquals(False, slurpys.isSlump('EFAHG'))
        self.assertEquals(False, slurpys.isSlump('DEFG'))
        self.assertEquals(False, slurpys.isSlump('DG'))
        self.assertEquals(False, slurpys.isSlump('EFFFFDG'))

    def testSlimp(self):
        slurpys = Slurpys()
        self.assertEquals(True, slurpys.isSlimp('AH'))
        self.assertEquals(True, slurpys.isSlimp('ABAHC'))
        self.assertEquals(True, slurpys.isSlimp('ABABAHCC'))
        self.assertEquals(True, slurpys.isSlimp('ADFGC'))
        self.assertEquals(True, slurpys.isSlimp('ADFFFFGC'))
        self.assertEquals(True, slurpys.isSlimp('ABAEFGCC'))
        self.assertEquals(True, slurpys.isSlimp('ADFDFGC'))

    def testNotSlimp(self):
        slurpys = Slurpys()
        self.assertEquals(False, slurpys.isSlimp('ABC'))
        self.assertEquals(False, slurpys.isSlimp('ABAH'))
        self.assertEquals(False, slurpys.isSlimp('DFGC'))
        self.assertEquals(False, slurpys.isSlimp('ABABAHC'))
        self.assertEquals(False, slurpys.isSlimp('SLIMP'))
        self.assertEquals(False, slurpys.isSlimp('ADGC'))
        
    def testSlurpy(self):
        slurpys = Slurpys()
        self.assertEquals(True, slurpys.isSlurpy('AHDFG'))
        self.assertEquals(True, slurpys.isSlurpy('ADFGCDFFFFFG'))
        self.assertEquals(True, slurpys.isSlurpy('ABAEFGCCDFEFFFFFG'))

    def testNotSlurpy(self):
        slurpys = Slurpys()
        self.assertEquals(False, slurpys.isSlurpy('AHDFGA'))
        self.assertEquals(False, slurpys.isSlurpy('DFGAH'))
        self.assertEquals(False, slurpys.isSlurpy('ABABCC'))

def showSlurpy(n, string):
    print 'SLURPYS OUTPUT'
    for i in range(n):
        if(slurpys.isSlurpy(strings[i]) == True):
            print 'YES'
        else:
            print 'NO'
    print 'END OF OUTPUT'
    
if __name__=='__main__':
    #unittest.main()
    n = input()
    strings = []
    slurpys = Slurpys()
    for i in range(n):
        strings.append(raw_input())
        
    showSlurpy(n, strings)

우선은 최대한 속도에 주력. 한데 완성 하고나서 리펙토링을 어찌해야할 지도 난감함. --재동
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:03
Processing time 0.0120 sec