알고리즘/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로 명확해서 하드코딩하신 분도 많더라.

그게 더 편했을 듯.

 

고찰

 

-