https://www.acmicpc.net/problem/4375
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
'알고리즘 문제(SOL)' 카테고리의 다른 글
[백준/2110/파이썬] 공유기 설치 (0) | 2022.02.04 |
---|---|
[백준/4195/파이썬] 친구 네트워크 (0) | 2022.02.04 |
[백준/2441/파이썬] 별 찍기 4 (0) | 2022.02.03 |
[백준/2805/파이썬] 나무 자르기 (0) | 2022.02.03 |
[백준/16562/파이썬] 친구비 (0) | 2022.02.03 |