알고리즘/Python
[python] 백준 1748 - 수 이어 쓰기 1
제주도랏맨
2022. 3. 28. 17:59
출처 : 백준, https://www.acmicpc.net/problem/1748
1748번: 수 이어 쓰기 1
첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.
www.acmicpc.net
더보기
풀이
if __name__ == '__main__':
n = input()
length = len(n)
try:
down_n = int("9" * (length - 1))
except:
down_n = 0
ans = 0
for i in range(1, length):
try:
ans += (int('9' * i) - int('9' * (i-1))) * i
except:
ans += int('9' * i) * i
ans += (int(n) - down_n) * length
print(ans)
들어온 글자의 자릿수 length를 구한 후, 거기서 한자리를 뺐을 때의 최댓값 '9' * (length - 1)을 구하고 정수로 바꾼다.
그 후 1부터 length까지 돌면서 ans에 각 자리수별 숫자 개수 * 자릿수를 더해준다.
try ~except문의 경우 int 함수 내의 문자열이 빈 문자열일 경우 에러가 발생하기 때문에 이때 0을 넣어주는 에러 처리이다.
시간 복잡도
-
다른 사람의 풀이를 보면서 알게 된 점
수 범위가 1 ≤ N ≤ 100,000,000로 명확해서 하드코딩하신 분도 많더라.
그게 더 편했을 듯.
고찰
-