알고리즘/백준
백준 1748 - 수 이어 쓰기 1/ Python
Hwisaek
2021. 8. 26. 13:39
반응형
문제: https://www.acmicpc.net/problem/1748
1748번: 수 이어 쓰기 1
첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.
www.acmicpc.net
문제 설명
더보기
문제
1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223...
이렇게 만들어진 새로운 수는 몇 자릿수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.
출력
첫째 줄에 새로운 수의 자릿수를 출력한다.
정답
n = input()
length = len(n)
count = 0
if length > 1:
i = 0
for i in range(1, length):
count += 9 * (10 ** (i - 1)) * i
n = int(n) - (10 ** i)
n += 1
count += n * (i + 1)
else:
count = n
print(count)
# 1 ~ 9 | 9 * 1
# 10 ~ 99 | 90 * 2
# 100 ~ 999 | 900 * 3
# 1000~ 9999 | 9000 * 4
# 9 * 1 + 90 * 2 + 900 * 3 + 9000 * 4
풀이
더보기
n = input()
length = len(n)
count = 0
if length > 1:
i = 0
for i in range(1, length):
count += 9 * (10 ** (i - 1)) * i
n = int(n) - (10 ** i)
n += 1
count += n * (i + 1)
else:
count = n
print(count)
# 1 ~ 9 | 9 * 1
# 10 ~ 99 | 90 * 2
# 100 ~ 999 | 900 * 3
# 1000~ 9999 | 9000 * 4
# 9 * 1 + 90 * 2 + 900 * 3 + 9000 * 4
각 자리수별 개수의 합을 먼저 구한 다음, 해당 자릿수에서의 연산만 처리하면 되는 문제입니다.
반응형