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.0087 sec