1. 문제

lovelyunsh.tistory.com/manage/posts/

 

TISTORY

나를 표현하는 블로그를 만들어보세요.

www.tistory.com

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

+ Recent posts