U E D R , A S I H C RSS

Primary Arithmetic/Leonardong

접근 방법

수�� 구현한다는 ���었다.
~cpp �리 = �리수1 + �리수2 + 전단계 �리(�리수1+�리수2)

코드

~cpp 
def carry( *digits ):
    result = 0
    for digit in digits:
        result += digit
    if result > 9:
        return 1
    return 0

def getValueOfDegree( num, degree ):
    if degree == 0:
        return 0
    return (num % (degree * 10)) / degree
def countUpCarry( n, m ):
    count = 0
    degree = 1
    while degree < 10*(n + m):
        count += carry( getValueOfDegree( n, degree ),
                        getValueOfDegree( m, degree ),
                        getCarry( n, m, degree) )
        degree *= 10
    return count
def getCarry( n, m, degree ):
    if degree == 0:
        return 0
    return carry( getValueOfDegree( n, degree/10 ), getValueOfDegree( m, degree/10 ), getCarry(n, m, degree/10) )
#########################################################################           
import unittest

class TemplateTestCase(unittest.TestCase):
    def testCountUpCarryEqualDegreeOne(self):
        self.assertEquals( 0, countUpCarry( 0,0 ) )
        self.assertEquals( 1, countUpCarry( 9,1 ) )
    def testGetValueOfDegree(self):
        self.assertEquals( 0, getValueOfDegree( 0, 1 ) )
        self.assertEquals( 2, getValueOfDegree( 1234, 100 ) )
        self.assertEquals( 0, getValueOfDegree( 1, 10 ) )
    def testCountUpCarryEqualDegreeTwo(self):
        self.assertEquals( 0, countUpCarry( 10,10 ) )
        self.assertEquals( 1, countUpCarry( 10,90 ) )
    def testComplex(self):
        self.assertEquals( 4, countUpCarry( 1, 9999 ) )
        self.assertEquals( 2, countUpCarry( 1, 9099 ) )
    def testCarry(self):
        self.assertEquals( 0, carry( 0,0 ) )
        self.assertEquals( 1, carry( 1,9 ) )
#########################################################################
if __name__ == '__main__': 
    unittest.main()

ì�´ë ‡ê²Œ 놓고 보니 수ì‹�ê³¼ 비êµ�í•´ ì�´ë¦„ì�„ 잘못 ì§€ì�€ 부분ì�´ 눈ì—� ë³´ì�¸ë‹¤. 아무튼 전단계 ìº�리를 구하는 부분ì�„ 그냥 작성하ëŠ�ë�¼ í��름ì�„ 타지 못했다. 잘 ë�Œì•„가는 프로그램ì�„ 만들었지만, 머리 ì†�ì—� 함수 재귀 호ìœì�„ 계ì†� 떠올리고 있었다. 수ì‹�ì�´ëž€ 메타í�¬ê°€ 있었는ë�°ë�„ 구현ì�„ 하는ë�° 메타í�¬ë¥¼ 코드와 연결시키는ë�° 오래 걸렸다. 아니 메타í�¬ë¥¼ ìƒ�ê°�하고 구현한 것ì�´ 아니다. 중복ì�„ 없애다 보니 그제서야 수ì‹�ì�´ 눈ì—� 들어왔다.
빠른 ��가 아니었는�� 오히려 예�했� 시간(1시간) 안� �마쳤다. 시간안� 테스트&리팩토� �내기는 여전히 잘 안�는 편�다. 한 번 � 해�� 괜찮� 문제 같다.


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:02
Processing time 0.0256 sec