1+ class Node (object ):
2+ def __init__ (self , animalName = None , animalKind = None , pointer = None ):
3+ self .animalName = animalName
4+ self .animalKind = animalKind
5+ self .pointer = pointer
6+ self .timestamp = 0
7+
8+
9+ class AnimalShelter (object ):
10+ def __init__ (self ):
11+ self .headCat = None
12+ self .headDog = None
13+ self .tailCat = None
14+ self .tailDog = None
15+ self .animalNumber = 0
16+
17+ def enqueue (self , animalName , animalKind ):
18+ self .animalNumber += 1
19+ newAnimal = Node (animalName , animalKind )
20+ newAnimal .timestamp = self .animalNumber
21+
22+ if animalKind == 'cat' :
23+ if not self .headCat :
24+ self .headCat = newAnimal
25+ if self .tailCat :
26+ self .tailCat .pointer = newAnimal
27+ self .tailCat = newAnimal
28+
29+ elif animalKind == 'dog' :
30+ if not self .headDog :
31+ self .headDog = newAnimal
32+ if self .tailDog :
33+ self .tailDog .pointer = newAnimal
34+ self .tailDog = newAnimal
35+
36+ def dequeueDog (self ):
37+ if self .headDog :
38+ newAnimal = self .headDog
39+ self .headDog = newAnimal .pointer
40+ return str (newAnimal .animalName )
41+ else :
42+ print ("개가 없습니다!" )
43+
44+ def dequeueCat (self ):
45+ if self .headCat :
46+ newAnimal = self .headCat
47+ self .headCat = newAnimal .pointer
48+ return str (newAnimal .animalName )
49+ else :
50+ print ("고양이가 없습니다!" )
51+
52+ def dequeueAny (self ):
53+ if self .headCat and not self .headDog :
54+ return self .dequeueCat ()
55+ elif self .headDog and not self .headCat :
56+ return self .dequeueDog ()
57+ elif self .headDog and self .headCat :
58+ if self .headDog .timestamp < self .headCat .timestamp :
59+ return self .dequeueDog ()
60+ else :
61+ return self .dequeueCat ()
62+ else :
63+ print ("동물이 없습니다." )
64+
65+ def _print (self ):
66+ print ("고양이:" )
67+ cats = self .headCat
68+ while cats :
69+ print (f"\t { cats .animalName } " )
70+ cats = cats .pointer
71+ print ("개:" )
72+ dogs = self .headDog
73+ while dogs :
74+ print (f"\t { dogs .animalName } " )
75+ dogs = dogs .pointer
76+
77+
78+ if __name__ == '__main__' :
79+ qs = AnimalShelter ()
80+ qs .enqueue ('밥' , 'cat' )
81+ qs .enqueue ('미아' , 'cat' )
82+ qs .enqueue ('요다' , 'dog' )
83+ qs .enqueue ('울프' , 'dog' )
84+ qs ._print ()
85+
86+ print ("하나의 개와 고양이에 대해서 dequeue를 실행합니다." )
87+ qs .dequeueDog ()
88+ qs .dequeueCat ()
89+ qs ._print ()
0 commit comments