정답 코드:
C = int(input())
for i in range(C):
a = list(map(int,input().split()))
b = (sum(a[1:]))/(a[0])
c = 0
# b = a과목의 평균.
for j in a[1:]:
if j > b:
c += 1
rate = c/a[0] * 100
print(f'{rate:.3f}%')
코드 풀이:
우선 C를 전달 받고,
C범위만큼 반복문을 설정한다.
a에는 list형태로 예제처럼 과목수/ 점수들을 받고
이 a 리스트의 평균을 구하는 b를 만든다.
이 때 b = a의 1번째 인덱스부터 끝까지의 합을(0번째 인덱스는 과목 수니까 점수에 포함X)
a의 0번째 인덱스로 나누면 평균 점수가 된다.
그리고 c 에 초기값 0을 설정한 후,
2중 for 문을 통해 j를 각 과목 점수들로 불러오는데, (이 때도 1번 인덱스부터 시작)
만약 j가 평균보다 클 경우 c의 값을 1 증가시켜서,
평균보다 큰 j들의 수를 과목수인 a[0]으로 나눈 값은 0.x 가 된다.
이때 문제에서 주어진 답을 도출하기 위해선 100을 곱해서 2자리 정수로 만들어 준 뒤
f'{rate:.3f}%' 로 출력하면 rate값을 소숫점 3번째까지 출력이 되기에
답이 나온다!
거의 1시간을 헤맨 문제인 만큼.. 해설도 지저분하다.
이 문제를 마지막으로 1차열 배열 코테는 끝났고,
다음 코테를 하면서는 좀 더 깊게 공부해서 설명도 잘 해봐야겠다..