반응형
[ Contents ]
1. 문제 (링크 참조)
2. 문제 풀이
123456789 10111213141516 ... 100101102
1부터 N까지의 수를 이어서 쓸 때, 그 수의 길이를 구하는 문제입니다.
2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학
시간제한이 굉장히 빠듯한 편입니다. 단순히 숫자가 올라갈 때마다 자릿수를 계산하면 '시간초과'가 납니다. 규칙을 찾아야 합니다.
1자릿수: 1~9 => 9개
2자릿수: 10~99 => 90개
3자릿수: 100~999 => 900개
...
자릿수를 digit이라고 할 때, 해당 자릿수의 숫자는 9 * 10^(digit-1) 개입니다.
3. 코드
N = input()
digit = len(N) #자릿수
res = 0 # 결과값
# 이전 자릿수까지의 합
for i in range(digit):
# 해당 자릿수의 숫자 개수 * 자릿수
res += (9 * (10**(i-1))) * (i)
# 현재 자릿수의 합
# N의 자릿수에서 N까지의 숫자 개수 * N의 자릿수
res += (int(N) - 10**(digit-1) + 1) * digit
print(int(res))
이전 자릿수까지의 숫자들의 합과, 현재 자릿수에서 N까지의 합을 구합니다.
반응형
'Algorithm' 카테고리의 다른 글
[구현/수학] 백준 2506 점수계산 - Python (0) | 2022.02.05 |
---|---|
[구현/수학] 백준 9085 더하기 - Python (0) | 2022.02.05 |
[구현/수학] 백준 15953 상금 헌터 - Python (0) | 2022.02.04 |
[구현/수학] 백준 학점계산 - Python (0) | 2022.02.04 |
[구현/수학] 백준 9375 패션왕 신해빈 - Python (0) | 2022.02.04 |
댓글