#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
int main(){
while(cin >> n){
int cnt = 1; int ret = 1;
while(true){
if(cnt % n == 0){
cout << ret << "\n";
break;
}
else{
cnt = (cnt * 10) +1;
cnt %= n;
ret++;
}
}
}
return 0;
}
문제를 풀 때 최대, 최소 값에 따라 아이디어의 큰 틀을 결정한다.
이번 문제는 최대 값이 10000이었기에 전체를 탐색해도 가능하겠다라는 생각이 들었다.
주어진 수에 대한 조건은 2와 5의 배수가 아니라는 것이었지만
주어진 수이기에 배제하고 넘어가는 것으로 결정했다.
그렇다면 n의 배수 중 1로만 이루어진 수의 자리 수 결정. 이 핵심 문젠데 1부터 11 111 1111을 쭉 n으로 나눠보는 것으로 결정했다.
따라서 while(cin >> n) 입력을 계속 받겠다.
cnt를 1부터 10곱하고 1더하고 하면 1로만 이루어진 수가 되니까 만들고 하나 세고
만약 나눠지면 세어진 수를 출력하도록 코드를 설계했다.
왤케 어려운지 모르겠다. 최대값이 낮아서 무식하게 다 해보는게 맞다는 생각까지 들었는데
어느 부분까지를 조건으로 잡아야할지, 이 조건들을 어떤 순서로 설계해야 효율적일지에 대해 감이 안잡혔다.
이번 문제는 1로만 이루어진 수를 만드는 방법과 무식하게 하나씩 해봐야겠다는 생각 2가지가 핵심이었다고 생각한다.