반응형
문제: https://www.acmicpc.net/problem/1748
문제 설명
더보기
문제
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
각 자리수별 개수의 합을 먼저 구한 다음, 해당 자릿수에서의 연산만 처리하면 되는 문제입니다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 1032번 - 명령 프롬프트 / Python (0) | 2021.08.31 |
---|---|
백준 17413번 - 단어 뒤집기 2 (0) | 2021.08.26 |
백준 2331번 - 반복수열 (0) | 2021.08.26 |
백준 1120번 - 문자열 / Python (0) | 2021.08.25 |
백준 2108번 - 통계학 / Python (0) | 2021.08.25 |