본문 바로가기
백준/구현

[Softeer Lv.3] 성적 평균 (Python)

by 똥먹는낙타 2023. 1. 4.
728x90
반응형
 
문제

N명의 학생들의 성적이 학번순서대로 주어졌다. 학번 구간 [A, B]가 주어졌을 때 이 학생들 성적의 평균을 구하는 프로그램을 작성하라.

제약조건

1 ≤ N ≤ 106 인 정수

1 ≤ K ≤ 104 인 정수

1 ≤ Si ≤ 100 인 정수

1 ≤ Ai ≤ Bi ≤ N

입력형식

첫 번째 줄에 학생 수 N과 구간 수 K가 주어진다.

두 번째 줄에는 학생의 성적 Si (1 ≤ i ≤ N)가 주어진다. i + 2 (1 ≤ i ≤ K)번째 줄에는 i번째 구간 Ai, Bi가 주어진다.

출력형식

i번째 줄에 i번째 구간의 성적평균(소수셋째자리에서 반올림)을 출력한다.

차이가 0.01이하이면 정답으로 채점됨.

입력예제1
5 3
10 50 20 70 100
1 3
3 4
1 5
출력예제1
26.67
45.00
50.00

 

✔️ Code 

import sys
input = sys.stdin.readline

n, k = map(int, input().split())
s = [0] + list(map(int, input().split()))
result = []

for i in range(k):
    sum = 0
    a, b = map(int, input().split())
    x = s[a:b+1]

    for j in x:
        sum += j
    result.append(round(sum/len(x), 2))

for i in result:
    print(format(i, ".2f"))

✏️ Comment

소프티어 문제를 풀면서 느낀 것은 꽤나 시간초과에 빡빡하다는 것(?)

하여튼 이 문제는 Lv.3 치고는 굉장히 쉬웠다. Lv.3까진 원래 쉬운건가..? 다만 round()와 format() 사용법에 대해서 익혀놔야 할 것 같다.

  • round(number, n) : number를 소수점 n자리까지 반올림 
    • ex) round(2.54) => 3
    • ex) round(2.54, 1) => 2.5
  • round(number, -1) : 십의 자리까지 반올림
    • ex) round(182.153, -1) => 180.0
    • 10의 n승까지 반올림하려면 -n을 인자로 전달
  • format(실수, ".표기할 자리수f") 와 같은 형태로 사용
    • format(실수, ".2f") : 실수를 소수 두번째 자리까지 표기하겠다는 뜻
    • ex) format(26.667, ".2f") => 26.67 
    • ex) format(24.0, ".2f") => 24.00
728x90
반응형

댓글