https://www.acmicpc.net/problem/1748
문제 조건 파악 및 접근
자릿수만 구하면 되므로, 자릿수가 언제 바뀌는지만 확인해서 변경해준다.
1 ~ 9 => 1자리
10 ~ 99 => 2자리
100 ~ 999 => 3자리,
즉 i를 10 , 100 , ... 으로 나눴을때 몫이 0이면 자릿수가 바뀐다.
따라서 자릿수가 바뀔때마다 다음 나눠야 하는 수는 10을 곱해주고,
다음 더해줘야 할 자릿수는 +1을 해준다.
소스 코드
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
29
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class _1748_수_이어쓰기1 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int sum = 0;
int digit = 10;
int num = 1; // 자리수
for (int i = 1; i <= N; i++) {
if (i % digit == 0) {
digit *= 10;
num++;
}
sum += num;
}
System.out.println(sum);
br.close();
}
}
|
cs |