알고리즘/Softeer

Softeer - 성적 평균 / Python

Hwisaek 2021. 10. 16. 16:44
반응형

문제: https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=389 

 

Softeer

제한시간 : C/C++(1초), Java/Python(2초) | 메모리 제한 : 256MB N명의 학생들의 성적이 학번순서대로 주어졌다. 학번 구간 [A, B]가 주어졌을 때 이 학생들 성적의 평균을 구하는 프로그램을 작성하라. 입

softeer.ai

문제 설명

더보기

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

입력 형식

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

입력은 다음 조건을 만족한다.
    1 ≤ N ≤ 106 인 정수
    1 ≤ K ≤ 104 인 정수
    1 ≤ Si ≤ 100 인 정수
    1 ≤ Ai ≤ Bi ≤ N

출력 형식

i번째 줄에 i번째 구간의 성적 평균(소수 셋째 자리에서 반올림)을 출력한다.
(차이가 0.01 이하이면 정답으로 채점됨)

입력 예제

5 3
10 50 20 70 100
1 3
3 4
1 5

출력 예제

26.67
45.00
50.00


 


정답

# https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=389
n, k = map(int, input().split())
s = list(map(int, input().split()))

for _ in range(k):
    a, b = map(int, input().split())
    avg = sum(s[a - 1:b]) / (b - a + 1)
    print(f'{avg:.2f}')

 


풀이

 난이도가 2인 문제들보다 쉽게 느껴졌던 문제입니다.

 

 학생들의 점수를 입력받아 특정 구간의 평균을 구하면 되는 문제입니다. 파이썬의 경우 인덱스 슬라이싱을 통해 쉽게 구간합을 구할 수 있으며, 구간합을 구간 길이로 나누면 구간의 평균이 나오므로 이를 통해 문제를 쉽게 해결할 수 있습니다.

 

 문제의 입력 형식이 더 복잡해진다면 배열을 구간합 배열로 만들어서 문제를 해결한다면 더 쉽게 해결할 수 있겠습니다.

반응형

'알고리즘 > Softeer' 카테고리의 다른 글

Softeer - 금고털이 / Python  (0) 2021.10.16
Softeer - 바이러스 / Python  (0) 2021.10.16
Softeer - 8단 변속기 / Python  (0) 2021.10.16
Softeer - 장애물 인식 프로그램 / Python  (0) 2021.10.16