알고리즘 문제(SOL)

[백준/4375/파이썬] 1

https://www.acmicpc.net/problem/4375

 

4375번: 1

2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.

www.acmicpc.net

Problem

  • 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.

조건

  • 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다.

SOL

처음에는 문자열로 1->11->111->1111 와같이 1씩 붙여가면서, 그 수가 해당 숫자로 나누어 지는지 확인해가면서 반복문을 돌아줬음. 근데 시간초과가 발생했다. int -> string의 형변환은 보통 O(len(str))으로 발생한다. (사실, len(str)이라도 가능할거 같았는데, 왜 안되는지 잘 모르겠다)

str1 = "123456"
a=0
for s in str1:
	a = a*10+s

그래서, 숫자로 구현해줬더니, 맞았다. 흠.. 아마 len(num)도 N이 걸리니까 그런거 같기도한데.. 모르겠음!

import sys
input =sys.stdin.readline

while True:
    try:
        N=int(input().rstrip())
    except:
        break
    num=0
    i=1
    while True:
        num=num*10+1
        if num%N==0:
            print(i)
            break
        i+=1