U E D R , A S I H C RSS

Ones/1002

μ ‘κ·Ό

처음 문제λ₯Ό μ΄ν•΄ν•˜λŠ”λ° λŒ€λž΅ 4λΆ„. '10μ§„μˆ˜' λΌλŠ” 말에 ν˜„ν˜Ήλ˜μ—ˆλ‹€κ°€ μƒ˜ν”Œ 데이터 λ³΄λ©΄μ„œ κ°„λ‹¨νžˆ 감을 작음.

μ²˜μŒμ—λŠ” brute-force ν‹±ν•œ 방법 적용. κ·ΈλŸ¬λ‹€κ°€ μ„Έλ²ˆμ§Έ μƒ˜ν”Œ λ°μ΄ν„°μ—μ„œ μ—„μ²­λ‚˜κ²Œ 속도가 μ €ν•˜λ˜λŠ” 것을 λŠλ‚Œ. μ—¬νƒœκ»μ˜ κ²½ν—˜μ— μ˜ν•˜λ©΄ '무언가 λ‹€λ₯Έ 계산 방법이 있겠ꡰ' μ΄λΌλŠ” 감이 μ˜€λ‹€. brute-force λ°©λ²•μ—μ„œ 미리 cut 을 ν•  방법을 이리저리 μ‹œλ„. (μ²«μ§Έμžλ¦¬μ™€ 끝자리만 1 비ꡐ.) μ‹œκ°„μ΄ 쀄어듀긴 ν•˜λ‚˜ 9901 μ˜ˆμ œμ— λŒ€ν•΄μ„œ 금방 닡이 λ‚˜μ˜€μ§„ μ•ŠμŒ. 9901 보닀 큰 μ˜ˆμ œλ„ μžˆμ„κ²ƒμ΄λΌ ν• λ•Œ, λΆ„λͺ… 금방 끝낼 방법이 μžˆμ„ κ²ƒμ΄λΌλŠ” 확신은 λ“œλ‚˜, 생각이 λ– μ˜€λ΄μ§€ μ•ŠμŒ.

μ–΄λ–»κ²Œ μ ‘κ·Όν• κΉŒ ν•˜λ‹€κ°€ μ§€κΈˆκΉŒμ§€ μ—°μŠ΅μž₯을 μ•ˆ μ“°κ³  μžˆμŒμ„ 확인. μ—°μŠ΅μž₯을 κΊΌλ‚΄λŠ” μˆœκ°„ '팍' ν•˜κ³  λŠλ‚Œμ΄ μ˜€λ‹€.~ 그리고 λ°”λ‘œ μ΅œμ’… μ½”λ“œ μ™„λ£Œ.

  • μ—°μŠ΅μž₯에 적힌 숫자 : 1, 11, 111, 1111 ^^

μ΅œμ’… μ½”λ“œ

~cpp 
import unittest

def isAllOne(aValue):
    valueStr = str(aValue)
    for each in valueStr:
        if each != '1':
            return False
    return True

def isMultiplyOf(aValue, mulValue):
    return aValue % mulValue == 0

def ones(aValue):
    theOnes = "1"
    while True:
        onesValue = int(theOnes)
        if isMultiplyOf(onesValue,aValue):
            return len(theOnes)
        theOnes += "1"

class OnesTest(unittest.TestCase):
    def testSmall(self):
        self.assertEquals(3, ones(3))
        self.assertEquals(6, ones(7))
    def testSmall2(self):
        self.assertEquals(9, ones(9))
    def testLarge(self):
        self.assertEquals(12, ones(9901))
    def testIsAllOne(self):
        self.assert_(isAllOne(1111))
        self.assert_(not isAllOne(1112))

def main():
    print ones(int(raw_input()))

if __name__=="__main__":
    #unittest.main(argv=('','-v'))
    main()
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:54
Processing time 0.0082 sec