문제
https://www.acmicpc.net/problem/4375
4375번: 1
2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 각 자릿수가 모두 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.
www.acmicpc.net
풀이
while True:
try:
n = int(input())
except:
break
num = 1
num_count = 1 # 자리수
while True:
if num % n != 0: # n의 배수일 경우
num = num*10 + 1 # 1로만 이루어진 다음 수로 갱신
num_count += 1 # 자리수 카운트
else: # n의 배수가 아닐 경우 종료
break
print(num_count)
다른 풀이
설명
문제 자체가 이해되지 않았다…
처음 읽었을 때 각 자리수가 모두 1로만 이루어진 n이 배수가 도대체 뭘까………뭐지… 라는 생각이 들었다. 솔직히 예제를 봐도 이해가 안됐다. 그래서 다른 분의 풀이를 참고 했다.
⇒ 1, 11, 111, 1111 과 같은 수를 의미했다!
- n의 배수인지 확인: n으로 나눈 나머지가 0인지 확인
- n의 배수가 아니면: 10을 곱하고 1을 더해서 1로 이루어진 다음 수를 만듬!
- 다음 수를 만들 때마다 1로 이루어진 자리수가 늘어나므로 자리수 하나씩 증가시켜주기
- 이 과정에서 n의 배수를 찾는다면 반복문 종료 후 구한 자리수 출력
** 여러개의 테스트 케이스로 이루어져 있는데 종료 조건이 없으므로 ⇒ try ~ except 를 이용해 예외 처리하여 프로그램이 종료 되도록 하기!