U E D R , A S I H C RSS

The Trip/Leonardong

각 여행자가 1센트까지 쪼개서 나워 가진다고 생각한 코드입니다.

~cpp 
class Exchanger:
    def getListOfBiggerThan(self, aMean, aList):
        resultList = []
        for each in aList:
            if each > aMean:
                resultList.append(each)
        return resultList
    def getMeanOfList(self, aList):
        return sum(aList, 0) / len(aList)
    def offerAShareOfMoney(self, aExpenses):
        expensesBiggerThanMean = self.getListOfBiggerThan(
                                    self.getMeanOfList(aExpenses),
                                    aExpenses)
        result = 0.0
        for each in expensesBiggerThanMean:
            result = result + abs( each - self.getMeanOfList(aExpenses) )
        return result
#########################################################################           
import unittest

class TheTripTestCase(unittest.TestCase):
    def setUp(self):
        self.ex = Exchanger()
    def testGetListOfBiggerThan(self):
        expenses = [0.0, 1.0, 2.0, 3.0]
        mean = self.ex.getMeanOfList(expenses) # mean is 1.5
        expected = expenses[2:]
        self.assertEquals( expected,
                           self.ex.getListOfBiggerThan( mean, expenses ))
    def testOfferAShareOfMoney(self):
        self.assertEquals( 10.0,
                           self.ex.offerAShareOfMoney( [10.0, 20.0, 30.0] ))
        self.assertEquals( 11.99,
                   self.ex.offerAShareOfMoney( [15.0, 15.01, 3.0, 3.01] ))

#########################################################################
if __name__ == '__main__': 
    unittest.main()   

Thread

일단 문제를 해하는데 시간 20분 정도 걸렸다. 문제 해결책을 찾아보던 중 평균보다 많 가진 사람들 돈을 나누어 주면 된다는 사실을 깨닫기까지 14분 걸렸다. 코드로 만드는데는 41분 걸렸는데, 알고리즘을 따라 무난히 작성하였다. 나머지 시간은 문법을 보거나 디버깅했다.

문제를 풀기 전에 샘플 입력부터 보는 경향 있다. 문제를 해 못했으므로 샘플 입력을 보다가 결국 다시 문제를 보느라 시간 지체된다. 따라서 문제를 다 해하고, 정의한 뒤 샘플 입력을 보아 정의가 맞는지 확인하는 순서로 문제를 풀어야겠다. 해결책은 문제를 정의한 다음에 떠올린다.

무엇 잘못 되어도 테스트를 추가해본다는 점은 역시나 TDD가 매력적일 수 밖에 없는 요인다. 제는 손으로 테스트를 하려면 너무 귀찮고 시간낭비라고 생각한다. TDD 리듬을 조절해줄 파트너가 옆에 있다면 더욱 좋으련만. :) --Leonardong

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:13
Processing time 0.0131 sec