WeightsAndMeasures/ì‹ ìž¬ë�™ ¶
~cpp
class Turtle:
def __init__(self, weight, strength):
self.weight = weight
self.strength = strength
self.canAmount = strength - weight
def inputATurtle():
numsStr = raw_input().split(' ')
if(numsStr == ['']):
return (0,0)
weight = int(numsStr[0])
strength = int(numsStr[1])
return (weight, strength)
def inputTurtles(turtles):
while(True):
(weight, strength) = inputATurtle()
if(weight == 0 or strength == 0):
break
turtles.append(Turtle(weight, strength))
def turtlesCompare(t1, t2):
result = 0
if(t1.canAmount > t2.canAmount):
result = -1
elif(t1.canAmount < t2.canAmount):
result = 1
return result
def pileUpTurtles(turtles):
totalWeight = turtles[0].weight
canAmount = turtles[0].canAmount
pile = [turtles[0]]
for t in turtles[1:]:
if(canAmount >= t.weight):
canAmount -= t.weight
if(canAmount > t.canAmount):
canAmount = t.canAmount
pile.append(t)
#showTurtles(pile)
return len(pile)
def showTurtles(turtles):
for t in turtles:
print t.weight, t.strength, t.canAmount
if __name__=='__main__':
turtles = []
inputTurtles(turtles)
turtles.sort(cmp = turtlesCompare)
numOfTurtle = pileUpTurtles(turtles)
print numOfTurtle
sort()ì—� 비êµ� 함수(turtlesCompare) 넣는ë�° ì�€ê·¼ížˆ 힘들었ì�Œ. 처ì�Œì—�는 C++ì�˜ STLì—�서 vectorì—� 비êµ� 함수 넣는 것과 같으리ë�¼ê³ ìƒ�ê°�í•˜ê³ ë¹„êµ� 함수를 만들었는ë�° 안ë�˜ì„œ 확ì�¸í•´ë³´ë‹ˆ 파ì�´ì�¬ì�˜ 리스트ì—�서는 결과를 {-1, 0, 1}로 해야지 ì œëŒ€ë¡œ ë�Œì•„간다는 것ì�„ 알았ì�Œ. --재ë�™
소팅 방�� 바꾸는 ��는 여러가지 방법� 있다.
~cpp
>>> class A:
... pass
...
>>> a1=A();a1.foo=30
>>> a2=A();a2.foo=-1
>>> l=[a1,a2]
>>> l.sort(key=lambda x:x.foo)
>>> l[0].foo
-1
>>> l.reverse()
>>> l[0].foo
30
>>> import operator
>>> l.sort(key=operator.attrgetter('foo'))
>>> l[0].foo
-1
>>> l.reverse()
>>> l.sort(cmp=lambda a,b:cmp(a.foo,b.foo))
>>> l[0].foo
-1
>>>
í�´ëž˜ìŠ¤ë¥¼ 사용한다면 스스로 어떻게 ì •ë ¬ë� ì§€ 아는 놈으로 만드는 것ë�„ ì¢‹ê² ë‹¤.
~cpp >>> class A: def __init__(self,foo): self.foo=foo def __cmp__(self,anA): return cmp(self.foo,anA.foo) def __repr__(self): return '<A : %d>'%self.foo >>> l=[A(i) for i in xrange(5,0,-1)] >>> l [<A : 5>, <A : 4>, <A : 3>, <A : 2>, <A : 1>] >>> l.sort() >>> l [<A : 1>, <A : 2>, <A : 3>, <A : 4>, <A : 5>]
--JuNe










