코딩 테스트 연습/백준

백준 1748번 수 이어 쓰기 1 (java)

대기업 가고 싶은 공돌이 2024. 12. 24. 17:02

[Silver IV] 수 이어 쓰기 1 - 1748

문제 링크

성능 요약

메모리: 14144 KB, 시간: 152 ms

분류

구현, 수학

제출 일자

2024년 12월 24일 16:56:32

문제 설명

1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.

1234567891011121314151617181920212223...

이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.

입력

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

출력

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

풀이

1의 자리 수는 9개

10의 자리 수는 90개

100의 자리 수는 900개다

 

만약 목표 수가 1024라면

 

9 * 1

90 * 2

900 * 3에

 

1000부터 1024까지 * 4를 더해주면 된다.

코드

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int x = Integer.parseInt(br.readLine());

        int count = 0;
        int  i;
        int mul = 9;
        int ad = 1;

        for(i=10;i<=x;i *= 10){
            count += mul * ad;
            mul *= 10;
            ad++;
        }

        i /= 10;

        for(;i<=x;i++){
            count += ad;
        }

        System.out.println(count);
    }
}