본문 바로가기

알고리즘/소프티어

[파이썬] Softeer 연습문제 #2. 성적 평균 (Lv. 3) 완벽해설

문제

 

https://softeer.ai/practice/6294

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

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

softeer.ai

 

 

해설

https://vehiclewithai.tistory.com/4

 

Softeer 연습문제 [파이썬] #1. A+B 해설

문제 제약조건 두 정수 A와 B는 1이상 9이하의 정수이다. 입력형식 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. 출력형

vehiclewithai.tistory.com

 

이 문제 또한 위의 1번 문제와 동일하게 입력값을 숫자로 변환한 후 처리 후 출력하는 과정이다. 

입력값을 받아들이는 방법, 이를 처리하고 출력하는 방법을 공부하면 바로 풀 수가 있다. 이에 대한 내용은 위 글에 첨부해놨으니 참고하면 좋을 듯 싶다.

 

위의 내용을 모두 학습했다면, 여기서 두가지를 추가적으로 배울 필요가 있다.

 

우선 첫번째로 "소수 셋째자리에서 반올림" 기능을 실현시키기 위해서 "round"라는 파이썬 내장함수를 이해할 필요가 있다. round 함수는 "round(숫자, 반올림해서 만들고 싶은 소수자릿수)"와 같이 구성이 되어 있기에, 첫번째 입력값으로는 내가 반올림하고 싶은 숫자를 넣어주고, 두번째로는 반올림해서 몇째자리로 만들지를 적어주면 된다. 이 문제에서는 소수 둘째자리라고 했으므로,

 

뒤에 2를 붙여주면 된다.

 

두번째 기능은 출력을 할 때도 소수 둘째자리 까지만 출력을 해주어야만 한다. 이는 print의 부가기능을 사용하면 된다.

"print("%.2f" % what)" 의 코드를 적어주면 된다.

 

그럼 필요한 기능을 모두 공부했으니, 코드를 작성해보자.

 

코드
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 i in range(A-1, B):
    	sum += scores[i]
        
    # 반올림하여 소수 둘째자리로 만든다.
    average = round(sum/(B-A+1),2)
    # 소수 둘째자리까지 출력한다.
    print("%.2f" % average)

 

여기서 scores = list(map(float, sys.stdin.readline().split())) 로 적어주어도 좋다.

 

 

결과