/*
문제
2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다.
출력
1로 이루어진 n의 배수 중 가장 작은 수의 자리수를 출력한다.
*/
import Foundation
//while let input = readLine() {
// var one = "1"
// while Int(one)! % Int(input)! != 0 {
// print(one)
// one.append("1")
// }
// print(one.count)
//}
while let input = readLine() {
var one = 1
var count = 1
while one % Int(input)! != 0 {
one = one * 10 + 1
one %= Int(input)!
count += 1
}
print(count)
}
단순히 문자열에 "1" 을 추가하고, 해당 문자열의 길이를 출력하는 방법으로 풀었으나 Runtime 오류가 발생했다.
실행 할때마다 결과값이 잘 나와서 왜 안되는지 한잘 머리를 굴렸다.. ( 주석처리한 부분! )
그리고 11113 같은 큰 수를 넣었더니.. 에러가 발생했다!!
이유는 Int 형의 범위를 넘어가서 오류가 발생하는 거였다..
그래서 어떻게 하지 고민하다가..
input으로 들어온 값으로 나눈 나머지로 계산하는 방식을 고안해 냈다..
왜 저렇게 고안했는지는 디버깅 몇번 해보면 알게 될것이당...
저렇게 계산하면 최대 범위를 넘어갈 일도 없을 뿐더러 계산도 차이없이 잘 된다!