1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223...
이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.
출력
첫째 줄에 새로운 수의 자릿수를 출력한다.
예제 입력 1 복사
5
예제 출력 1 복사
5
예제 입력 2 복사
15
예제 출력 2 복사
21
예제 입력 3 복사
120
예제 출력 3 복사
252
코드
n=input()
sum=0
for i in range(len(n)-1):
if(i!=0):
sum+=((10**(i+1)-1)-sum1)*(i+1)
sum1=(10**(i+1)-1)
else:
sum1=(10**(i+1)-1)
sum+=sum1
sum+=(int(n)-(10**(len(n)-1))+1)*len(n)
print(sum)
코드설명
1의 자리면 숫자 1개 10의 자리면 숫자2개 100의 자리면 숫자 3개이니, 그냥 몇의 자리숫자인지 보고 각 숫자의 자리숫자만큼 곱해주면 된다.
느낀점 및 배운점
728x90
'Algorithm > 백준' 카테고리의 다른 글
백준 6064번 : 카잉달력(python) (0) | 2022.01.15 |
---|---|
백준 14500번 : 테트로미노(python) (0) | 2022.01.10 |
백준 1107번 : 리모컨(python) (0) | 2021.12.27 |
백준 1476번 : 날짜 계산(python) (0) | 2021.12.24 |
백준 3085번 : 사탕 게임(python) (0) | 2021.12.24 |