[백준] 1748번 수 이어 쓰기 1 / C++
#문제
#풀이
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
long long sum = 0;
int digit = 1;
int startNum = 1;
while (true)
{
int endNum = startNum * 10 - 1;
if (n < endNum)
{
sum += (n - startNum + 1) * digit;
break;
}
else
{
sum += (endNum - startNum + 1) * digit;
}
startNum *= 10;
digit++;
}
cout << sum;
return 0;
}
#정리
1부터 n까지의 수를 이어쓰면 새로운 수를 얻을 수 있는데, n의 자리수를 출력하는 문제.(ex. n == 11, 1234567891011, 13출력) 1-9까지는 1자리, 10-99까지는 2자리, 100-999까지는 3자리임을 알 수 있다. 10을 넘길 때, 100을 넘길 때 그 전까지의 자리수를 한 번에 더해주면 빠르게 숫자를 출력 가능하다. 이를 활용해 수식을 작성하여 해결했다.
Enjoy Reading This Article?
Here are some more articles you might like to read next: