알고리즘/백준 문제풀이

[백준] 4344 평균은 넘겠지 파이썬 풀이

자바칩 프라푸치노 2021. 6. 15. 21:42

https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net

c = int(input()) #맨 위에 줄 입력받음
for i in range(c):
    inputs = list(map(int,input().split())) #한줄씩 입력받음
    avg = sum(inputs[1:])/inputs[0] #평균
    over_avg = 0 #평균 넘는 사람
    for score in inputs[1:]:
        if score> avg:
            over_avg += 1
    rate = over_avg/inputs[0] * 100
    print(f'{rate:.3f}%') #소수점 3자리까지

 

말로 풀어서 풀이

처음에 입력값은 몇 번 테스트 할 건지 이므로 그 개수만큼 for문을 돌린다.

for문을 돌면서 한줄씩 입력을 받는다

두번째 입력 부터, 첫번째는 몇 명인지, 두번째부터 끝까지는 각각 몇 점인지를 입력받는데

이것을 list에 넣어서 입력을 받는다.

평균을 구하려면 두번째 인덱스부터 끝까지 sum을 하고 맨 첫번째 인덱스로 나눠줘야한다.

두번째 인덱스부터 확인을 하면서 avg보다 높은 사람들이 있으면 over_avg를 하나씩 추가한다.

비율은 평균 넘는 사람 / 총 사람 * 100을 해준다.

f string을 사용하여 출력해준다.

 

정리

1. 입력값을 list로 입력받고 두번째부터 끝까지 모두 더한 값을 1번째 인덱스로 나눈다.

평균 = ( 점수들의 총합/ 사람 수)

2. list를 전부 돌면서 평균보다 높은 사람이 나타나면 over_avg(평균 넘는 사람) +1을 해준다

3. 비율을 구한다.

 

728x90