백준#1748 파이썬

JangWon·2023년 5월 2일
0

코딩테스트

목록 보기
1/1


문제를 푸는데 느낌상 여러가지 방식이 있을 것 같아서 풀다가 내가 푼 방법을 공유하려고 한다.

손으로 로직을 정리해본 것이다.
일단 먼저 N을 입력받는다(int변환x , 나중에 len을 사용하기위해) 120 이면 len이 3이니까
우리는 (1~9) (10~99) | (100~120) 이렇게 카테고리를 나눌 수 있다.
이사진에서 앞부분을 for문을 이용하여 값을 count에 더하고 뒷 부분을 처리하는 방식으로 나누었다.

#1748
import sys
import math
input = sys.stdin.readline

N = input() #len을 활용하기 위해서 int사용 x
numlength = len(N) - 1 #자리수
n = int(N)

count = 0
#자리수 이전까지의 합
for i in range(1,numlength):
    count += (int(math.pow(10,i)) - int(math.pow(10,i-1) )) * i
#120이면 100~120까지
calculate = int(math.pow(10,numlength-1))
count += ((n - calculate) + 1 ) * numlength
print(count)

제곱을 표현하기 위해 math.pow를 활용하였다.

도움이 되었던 반례 :
20 // 정답 31
200 // 정답 492
300 // 정답 792

profile
이것저것 해보기

0개의 댓글