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

+ Recent posts