[백준] 수 이어쓰기1(1748) (C++)

comomo·2024년 3월 30일

코딩연습

목록 보기
2/28

수 이어쓰기1(1748)

문제

1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223...
이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.

입력

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

출력

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

분석

1자리 숫자는 9개 2자리 숫자는 90개 3자리 숫자는 900개로 자릿수가 증가할때 마다 개수는 10배씩 증가한다.
이를 이용하여 입력받은 수의 자리수를 계산한다.

코드

#include<iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int ans = 0, k = 1, i;//K는 자릿수를 나타냄
    for (i = 9;n; i *= 10, k++) {
        if (n>i) { //n이 i이상이면
            ans += i* k; //자리수 * i를 더함
            n-=i; //n의 값은 i만큼 뺴줌
        }
        else { //i<n이면
            ans += k*n;  
            break;
        }
    }
    cout << ans << endl;
}

결과

+제출할때 수 이어쓰기1(1748)이 아닌 수 이어쓰기(1515)에 제출하는 실수가 있었는데 문제 잘 확인하자.......

profile
안녕하세요!

0개의 댓글