μ κ·Ό ¶
μ²μ λ¬Έμ λ₯Ό μ΄ν΄νλλ° λλ΅ 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()










