이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.
1234567891011121314151617181920212223...
입력
첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.
출력
첫째 줄에 새로운 수의 자릿수를 출력한다.
풀이
1. length변수를 선언하여 i가 length와 일치할 경우 length * 10을 해준다. => 2자릿수, 3자릿수.. 2. 자릿수가 증가함에 따라 자릿수당 해당 숫자가 위치해야함으로 cnt를 1증가 시켜준다. 3. 해당 자리만큼 temp에 cnt를 더해준다.
코드
/*
<수 이어 쓰기1>
- 1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
- 1234567891011121314...
<문제 해결>
- 1 ~ 9까지 해당 자리가 곧 숫자위치
- 10 ~ 99까지 2자리당 한 숫자위치
- 100 ~ 999까지 3자리당 한 숫자위치
- 1000 ~ 9999까지 4자리당 한 숫자위치
...
다시 1이 오는경우 자리수를 증가시켜 체크한다.
*/
import java.util.*;
class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
int cnt = 1; //자릿수를 count하기 위해 정의한 변수
int temp = 0; //새로운 수의 자릿수
int length = 10; //자리수를 증가하기 위해 설정
for(int i = 1; i <= number; i++){
if(i == length){
cnt++;
length = length * 10;
}
temp += cnt; //한자리수의 경우 1씩, 두자리수의 경우 2씩...
}
System.out.println(temp);
}
}