from typing import List
def grade_average(l: List[int], start: int, end: int) -> float:
score = round(sum(l[start-1:end]) / (end - start + 1), 2)
if str(score)[-1] == '0':
return str(score) + '0'
return score
n, k = map(int, input().split())
si = list(map(int, input().split()))
for _ in range(k):
a, b = map(int, input().split())
print(grade_average(si, a, b))
N, K = map(int, input().split()) # 학생 수 N과 구간 수 K를 입력 받음
scores = list(map(int, input().split())) # 학생의 성적을 입력 받음
for _ in range(K):
A, B = map(int, input().split()) # 구간 [A, B]를 입력 받음
sum_scores = sum(scores[A-1:B]) # 구간에 해당하는 성적의 합을 계산
avg_score = sum_scores / (B - A + 1) # 구간에 해당하는 성적의 평균을 계산
print(f'{avg_score:.2f}') # 평균을 소수셋째자리에서 반올림하여 출력
입력으로 주어진 학생 수 N과 구간 수 K를 입력 받습니다.
학생들의 성적을 입력 받아 scores 리스트에 저장합니다.
구간 수 K만큼 반복하면서 구간 [A, B]를 입력 받고, 해당 구간에 해당하는 성적의 합을 계산합니다.
구간에 해당하는 성적의 평균을 계산하고, 소수셋째자리에서 반올림하여 출력합니다.
위 코드에서 가장 시간이 많이 소요되는 부분은 구간에 해당하는 성적의 합인 sum_scores를 계산하는 부분입니다. 이 부분의 시간 복잡도는 구간의 길이에 비례하므로 O(B - A + 1)입니다.
따라서, 전체 코드의 시간 복잡도는 O(N + K * (B - A + 1))입니다.
본인 코드: 전체 코드의 시간 복잡도는 O(n + k * (end - start + 1))
ChatGPT code와 효율성 동일하다.