본문 바로가기
알고리즘/백준 - 파이썬

백준) 4344번 평균은 넘겠지 문제 (파이썬)

by AI Sonny 2022. 5. 30.
728x90

문제) 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다.

 

         당신은 그들에게 슬픈 진실을 알려줘야 한다. 첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

 

         둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고,

 

         이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

X = []

for a in range(int(input())):
    X.append(list(map(int,input().split())))

for a in X:
    avg = sum(a[1:]) / a[0]
    cnt = 0
    for score in a[1:]:
        if score > avg:
            cnt += 1
    rate = cnt/a[0] * 100
    print(f'{rate:.3f}%')

이번 문제는 심화 문제인 것 같다....

 

일단 for 문을 통해서 int(input())을 이용하여 입력된 값까지 반복하도록 하였고,

 

X에 값을 입력하면 list를 저장하도록 만들었다.

 

그 후 for 문을 다시 만들어 X 값만큼 반복하고,

 

avg를 a 1번째 배열부터 끝까지 다 더하고 0번째 있는 배열을 나눈는 것으로 만들었다.

 

그 후 cnt를 0 으로 선언하여 초기화를 시켰고, score를 만들고 반복문으로 만들었다.

 

그리고 if 문을 통해 score가 avg보다 크면 cnt에 1을 증감한다.

 

마지막으로 rate 변수를 선언하여 cnt에서 a[0]을 나누고, 100을 곱하면 답이 나오게 된다.

 

print() 문에서 f(소수점 형태)를 선언하고, rate란 값에 소수점 셋째자리까지 출력하도록 만들었다.

 

이해가 안되시거나 틀린 정보는 댓글로 알려주시면 감사하겠습니다!

728x90

댓글