Softeer/소프티어-성적 평균-Python

cosmos·2023년 5월 10일
0
post-thumbnail

문제

코드

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))

결과

ChatGPT Code

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}')  # 평균을 소수셋째자리에서 반올림하여 출력

ChatGPT 문제풀이

입력으로 주어진 학생 수 N과 구간 수 K를 입력 받습니다.
학생들의 성적을 입력 받아 scores 리스트에 저장합니다.
구간 수 K만큼 반복하면서 구간 [A, B]를 입력 받고, 해당 구간에 해당하는 성적의 합을 계산합니다.
구간에 해당하는 성적의 평균을 계산하고, 소수셋째자리에서 반올림하여 출력합니다.

ChatGPT 문제풀이와의 비교

위 코드에서 가장 시간이 많이 소요되는 부분은 구간에 해당하는 성적의 합인 sum_scores를 계산하는 부분입니다. 이 부분의 시간 복잡도는 구간의 길이에 비례하므로 O(B - A + 1)입니다.
따라서, 전체 코드의 시간 복잡도는 O(N + K * (B - A + 1))입니다.

본인 코드: 전체 코드의 시간 복잡도는 O(n + k * (end - start + 1))

ChatGPT code와 효율성 동일하다.

문제출처 & 깃허브

Softeer
Github

0개의 댓글