import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
// 브루트 포스
// n의 최대값은 1억인데 그러면 수가 너무 많다.
// 모든 경우를 고려하지 않고, 1의자리는 자리수를 1증가, 10의 자리는 2증가, 100의 자리는 3증가, ...
// 하는 특성을 이용한다.
int digits = (int)(Math.log10(num)+1); // 몇자리수인지 구하기
int len = 0;
if (digits < 2) { // 한자리수가 들어왔을 때
len+=num;
} else { // 두자리수 이상일 때
len += (num - Math.pow(10, digits-1) + 1)*digits;
digits-=1;
for (int i=0;i<digits;i++) {
len+=9*Math.pow(10, i)*(i+1);
}
}
System.out.println(len);
}
}
'알고리즘 > 백준 알고리즘(JAVA)' 카테고리의 다른 글
JAVA)15650번 N과 M(2) - 브루트 포스 (0) | 2020.08.05 |
---|---|
JAVA)15649번 N과 M (1) - 브루트 포스 (0) | 2020.08.04 |
JAVA)6064번 카잉 달력 - 브루트 포스 (0) | 2020.08.03 |
JAVA)14500번 테트로미노 - 브루트 포스 (0) | 2020.08.03 |
JAVA)1107번 리모컨 - 브루트 포스 (0) | 2020.08.03 |
알고리즘/백준 알고리즘(JAVA) 카테고리의 다른 글
JAVA)15650번 N과 M(2) - 브루트 포스
JAVA)15649번 N과 M (1) - 브루트 포스
JAVA)6064번 카잉 달력 - 브루트 포스
JAVA)14500번 테트로미노 - 브루트 포스