본문으로 바로가기

백준 1748번 수 이어쓰기 1 java

category Algorithm by java 2019. 10. 17. 19:05

https://www.acmicpc.net/problem/1748

 

 

문제

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

1234567891011121314151617181920212223...

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

입력

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

출력

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

 

 

1~9  는 1개

10~99 는 2개

100~999는 3개

       .

       .

       .

 10,000,000 ~ 99,999,999 는 8개

 

 

이런식으로 1억은 9개.

 

 

 

import java.util.Scanner;

public class Exam1748 {

	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in);
		int n =sc.nextInt();
		long ans =0;
		for(int start=1, len=1; start<=n; start*=10, len++) {
			int end = start*10-1;
			if(end > n) {
				end = n;
			}
			
			ans += (long)(end-start+1) * len;
		}
		System.out.println(ans);
	}
}