Q. 1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223...
이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.
입력.
첫째 줄에 N(1≤N≤100,000,000)이 주어진다.
출력.
첫째 줄에 새로운 수의 자릿수를 출력한다.
1부터 입력받은 n 까지 나열한 수를 하나의 수로 볼 때, 그 수의 자리수를 구하는 문제이다.
즉, 1을 n 까지 증가시키면서 자리수를 카운트해주면 된다.
자리수는 10, 100, ~ 100,000,000 일 때 변경되므로 이 규칙을 조건문으로 구현하였다.
#include <stdio.h>
int main(void)
{
int n, x, ans;
scanf("%d", &n);
x = 1, ans = 0;
while(x <= n)
{
if (x < 10) ans += 1;
else if (x < 100) ans += 2;
else if (x < 1000) ans += 3;
else if (x < 10000) ans += 4;
else if (x < 100000) ans += 5;
else if (x < 1000000) ans += 6;
else if (x < 10000000) ans += 7;
else if (x < 100000000) ans += 8;
else ans += 9;
x++;
}
printf("%d\n", ans);
return 0;
}
'백준 알고리즘' 카테고리의 다른 글
[C언어] 12015번 (0) | 2020.08.30 |
---|---|
[C언어] 2631번 (0) | 2020.08.17 |
[C언어] 16194번 (0) | 2020.07.15 |
[C언어] 9465번 (0) | 2020.07.14 |
[C언어] 2947번 (0) | 2020.07.13 |