Computer Science/Algorithm Problem

백준] 1748 - 수 이어 쓰기 1

TwinParadox 2018. 3. 3. 17:42
728x90

시간 제한 : 1초

메모리 제한 : 128MB




입력

첫째 줄에 N(1≤N≤100,000,000)이 주어진다.




출력

첫째 줄에 새로운 수의 자릿수를 출력한다.




소스코드

#include <iostream>
#include <math.h>
using namespace std;
int main(void)
{
	int n, su = 1;
	long long cnt = 0;
	cin >> n;

	while (pow(10, su) <= n)
	{
		cnt += su * (pow(10, su) - pow(10, su - 1));
		su++;
	}
	if (pow(10, su) - n >= 0)
		cnt += su * (n - pow(10, su - 1) + 1);
	cout << cnt;
}




Tip

무식하게 구하는 방식으로도 풀 수 있을지 모르겠다. 반복문을 1억회 돌리면 1초를 넘는다고 보는 편이라서, 아슬아슬하게 통과하는 것보다는 더 나은 방법을 선택하는 것이 좋다. 기본적으로 10의 단위로 알고 싶은 숫자의 자리수에 도달할 때까지 계속 계산하고 그 후에 남은 케이스를 정리해주는 방식으로 접근했다.


728x90