문제
1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223...
이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.
출력
첫째 줄에 새로운 수의 자릿수를 출력한다.
import java.util.Scanner;
public class baekjoon1748 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int length = length(n);
int res = (int) (n - Math.pow(10, length - 1) + 1) * length;
length--;
for (int i = length; i >= 0; i--) {
res += 9 * Math.pow(10, i - 1) * i;
}
System.out.println(res);
}
static int length(int n) {
int len = 0;
while (n != 0) {
n /= 10;
len++;
}
return len;
}
}
'알고리즘 > 초급1' 카테고리의 다른 글
[JAVA] 백준 15650번: N과 M (2) ( 초급 2 - 9 ) (0) | 2021.09.24 |
---|---|
[JAVA] 백준 15649번 N과 M (1) ( 초급 2-8 ) (0) | 2021.09.24 |
[JAVA] 백준 6064번: 카잉 달력 ( 초급 2-6 ) - hard (0) | 2021.09.23 |
[JAVA] 백준 14500번: 테트로미노 ( 초급 2-5 ) (0) | 2021.09.22 |
[JAVA] 백준 1107번 : 리모컨 ( 초급 2-4 ) - hard (0) | 2021.09.21 |