✨ 핵씸 포인트
- 문자열의 길이 구하기
- 0 ~ 9, 10 ~ 99 ,,, 자리수 까지의 문자 개수 구하는 것
솔직히 이건 답을 보고도 몰랐음.. 구현하는 방법을 더 많이 봐야함. 더 많이 풀어보자!
# 어쨋든 문자열의 길이를 얻기 위해선 길이를 한번 구해야한다.
# 수를 이어서 썼다는 거에 포커스를 맞추기보단, 길이라는 것은
# 그 수를 1의 자리수와 나머지수로 나누어 생각해볼수 있다는 것에 포커스!
# 그렇게 나누기 위해선 10으로 수를 나눈다.
# 나눈 횟수 = 문자열의 길이
# 1 ~ 9 : 1*(10-1)
# 10 ~ 99 : 2 * (100-10)
# 100 ~ n : 3 * (n - 10^(n의자리수-1) + 1)
# ✨ 이건 점차 익숙해져야 겠다. 잘 모르겠으면 코드를 몇번이고 반복해서 본다.공식이다..공식이야..
def solution(n) :
l, ret = len(str(n)), 0 # l은 받은 문자열의 길이, ret
# 문자열의 길이 (1의자리, 2의 자리,,) **는 제곱을 의미한다.
# n이 1의 자리, ~ n-1의 자리
for i in range(1, l) : ret += i * (10**i - 10**(i-1))
# n이 n의 자리
ret += l * (n - 10 ** (l-1) + 1)
return ret
num = int(input())
print(solution(num))
'🤜 코테 > 알고리즘' 카테고리의 다른 글
백준 문제 풀이 : 쉬운 최단거리 (14940) (2) | 2024.07.08 |
---|---|
백준 1158 : 요세푸스 (0) | 2021.03.16 |
백준 1476번 : 날짜 계산 파이썬 (0) | 2021.03.12 |
이진 탐색 (Binary Search) (0) | 2021.02.23 |
정렬 (sort) (0) | 2021.02.23 |