문제
https://www.acmicpc.net/problem/4375
2와 5로 나누어 떨어지지 않는 정수 n을 입력받아, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하라. 출력은 n의 배수 중 가장 작은 자리수를 출력한다.
풀이
1로 이루어진 숫자가 n으로 나누어 떨어지는지 찾으면 된다. 방법은 아래와 같다.
1. n을 입력받는다. (반복)
2. 1로 이루어진 숫자가 n으로 나누어떨어질 때까지 숫자를 증가시킨다.
3. 1로 이루어진 숫자가 n으로 나누어떨어지면 숫자의 길이를 출력한다.
코드
import sys
for n in sys.stdin: # n 입력
if n == '\n':
exit() # 입력 종료
num = 1 # 1로 이루어진 숫자
while True:
if num % int(n) == 0:
print(len(str(num))) # 자리수 출력
break
num = num * 10 + 1
처음에는 n의 배수 중 1로 이루어진 숫자를 찾는 방식으로 접근했었는데, 이 방법은 시간 초과였다.