# 유형 : 시뮬레이션
# 난이도 : 실버 3
# 그냥 반복문을 돌리면 시간초과 또는 메모리 초과가 날 것같아서, 자릿수를 이용하는 방식으로 해결하였다. 아래 표는 각 구간의 개수이다. 따라서 일의 자리는 1 * 9, 십의 자리는 2 * 90, 백의 자리는 3 * 900 이런식으로 진행하다가, 마지막 자리수는 음 예를 들어 1542라고 생각해보면 1542 - 1000 + 1 => 543개 마지막 자리수의 단위(1000)를 빼주고 1을 더해준 다음 자릿수(4)를 곱해준다.
1~9 | 9 |
10~99 | 90 |
100~999 | 900 |
1000~9999 | 9000 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
package bj;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class p1748 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String num = br.readLine();
int len = num.length();
int N = Integer.parseInt(num);
int tmp = 9;
int result = 0;
for(int i=1; i<len; i++) {
result += i*tmp;
tmp*=10;
}
int last =(int)( N - Math.pow(10, len-1)+1) * len;
result += last;
System.out.println(result);
}
}
|
cs |
'백준' 카테고리의 다른 글
#백준_2980 도로와 신호등 - Java 자바 (0) | 2020.02.26 |
---|---|
#백준_3048 개미 - Java 자바 (0) | 2020.02.25 |
#백준_1952 달팽이2 - Java 자바 (0) | 2020.02.22 |
#백준_2842 집배원 한상덕 - Java 자바 (0) | 2020.02.21 |
#백준_1331 나이트 투어 - Java 자바 (0) | 2020.02.21 |