int main()
{
// string 에다가 붙이는 식으로 해야할듯 하다.
int n;
cin >> n;
string s = "";
for (int i = 1; i <= n; ++i)
{
s += to_string(i);
}
cout << s.size() << endl;
}
: 재귀 사용
-> 시간 초과 발생함.
int go(int num)
{
if (num / 10 == 0)
{
return 1;
}
// 2135
return go(num / 10) + 1;
}
int main()
{
// string 에다가 붙이는 식으로 해야할듯 하다.
int n;
cin >> n;
// 그냥 자릿수의 카운트를 덧셈하는 방식으로 하자.
int res = 0;
// 이걸로 하면 메모리 초과 발생한다.
for (int i = 1; i <= n; ++i)
{
res += go(i);
}
cout << res << endl;
}
: 위의 2개 풀이로 일반적으로 탐색하면서 하기에는 적절치 않다.
특별하게 생각해서 접근해야 한다...
: 우리가 알수 있는 거는
1 ~ 9 는 1자리수다.
10 ~ 99는 2자리수다.
100 ~ 999는 3자리수다.
라는 거를 당연히 알고 있다.