대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
c= int(input())
for i in range(c):
nums= list(map(int, input().split()))
avg = sum(nums[1:])/nums[0]
cnt = 0
for score in nums[1:]:
if score>avg:
cnt += 1
rate = (cnt/nums[0])*100
print(f'{rate:.3f}%')
테스트 케이스 개수 c를 입력받는다
for문을 활용하여 c범위 내에서 숫자들을 입력받고
공백에 따라 따로 입력 받은 후에 list로 묶는다
여기서 변수 i 는 의미 없음 (i 대신 '_'로 하는 사람도 꽤 있다)
입력 받은 c가 5이면 0~4의 인덱스 값까지만 입력, 리스트 생성
초과하면 또 따로 0~4까지 입력, 리스트 생성(설명 좀 이상한가)
평균, avg를 구한다 리스트 nums[1:]
즉 인덱스 위치 1부터 끝까지 sum을 활용해 더하고
인덱스 위치 0 nums[0]과 나눈다
평균보다 높은 학생의 수를 구하기 위해
cnt 변수를 설정하고 초기값을 0으로 지정한다
for문을 이용하여 score 변수, 범위는 nums[1:]로 지정
즉, nums[1:]범위에서의 숫자들은 score인 것
score이 avg보다 높으면 cnt의 값들을 1개씩 증가한다
cnt+=1은 cnt = cnt+1이라는 뜻
평균보다 높은 학생의 비율을 백분위로 rate에 저장한다
print문에 f-string 문을 사용하여 소수점 3자리 까지 출력
f-string은 문자열 사용시 앞에 f를 붙이고 문자열 ''안에서
중괄호 {}를 이용해 변수, 계산식을 입력 가능하다
f-string에서 소수점 자릿수 지정할 때 {변수:.3f}로
구분자 ':' 왼쪽에는 변수를 오른쪽에는 소수점자리수를 지정