1. 문제
lovelyunsh.tistory.com/manage/posts/
2. 접근방법
1~9 : 9개
10 ~ 99 : 90 개
100 ~ 999 : 900 개
이렇게 이어쓰니
먼저 자릿수를 log를 이용해서 구하고
그 자릿 수 이전 까지는 모든 수가 다 있어야하니 (ex 524면 1~99까지는 다 있음)
공식으로 9 * 10의 (자릿수 - 1) 제곱 * 그 자릿수 를 다 더해주고
마지막 그 수 에서
맨 앞자리 수에 1을 뺀 값에 +1한 값을 구하고 ( 524 면 425개의 3자리 수가 있음)
그 갯수에 자릿수를 곱한 뒤 더하면 된다.
3. 자바 코드
package Silver;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class P1748수이어쓰기1 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int n = (int)Math.log10(N);
long result = 0L;
for(int i = 0 ; i < n ; i++)
result = (long) (result + 9 * Math.pow(10, i)*(i+1));
result += (N-Math.pow(10, n)+1)*(n+1);
System.out.println(result);
}
}
4. 마치며
수학 문제 푸는거 같아서 재밌슴
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준] 17090 미로 탈출하기 (4) | 2021.04.12 |
---|---|
[백준] 1946 신입사원 (1) | 2021.04.08 |
[백준] 2947 나무 조각 (0) | 2021.03.15 |
[백준] 1138 한 줄로 서기 (0) | 2021.03.15 |
[백준] 2847 게임을 만든 동준이 (1) | 2021.03.05 |