처음에 n의 범위가 꽤 커서 for문으로 각 범위에 대해 받을 때마다 해당 범위만큼 또 합계를 구해서 평균을 구하는 방식으로 하면 런타임에러가 나지 않을까 하는 생각이 들었다.
근데 딱히 다른 방법이 떠오르는게 없어서 일단 해보았는데 다행히도 런타임에러는 안떴다.
import sys
n,k = map(int,sys.stdin.readline().split())
scores = list(map(int,sys.stdin.readline().split()))
for i in range(k):
a,b = map(int,sys.stdin.readline().split())
sum = 0
for j in range(a-1,b):
sum+=scores[j]
ans = sum / (b-a+1)
print("{:.2f}".format(ans))
파이썬으로 소숫점자리 반올림 해주는 법을 몰라가지고 이 부분만 구글링을 통해 검색해서 문제를 해결하였다.
"{:.2f}".format(ans)
이때 숫자 2 부분이 몇번째 자리까지 소숫점으로 나타낼건지 정하는 수이다.
나는 문제에 따라 셋째자리에서 반올림하여 둘째자리까지 나타내기 위해 2를 썼다.
처음에는
round(ans, 2)
이렇게 해주었는데 이 방법을 사용해주면 나누어 떨어질 때
45.00 이렇게 나오는게 아니라 45.0 이렇게 나와서 문제에서 나온 테스트케이스의 답과 달라지게 된다.
따라서 전자의 방식을 사용하여 문제를 해결해주었다.