/*
 문제
 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으로 들어온 값으로 나눈 나머지로 계산하는 방식을 고안해 냈다..

 

왜 저렇게 고안했는지는 디버깅 몇번 해보면 알게 될것이당...

저렇게 계산하면 최대 범위를 넘어갈 일도 없을 뿐더러 계산도 차이없이 잘 된다!

+ Recent posts