[백준/Python]4344)평균은 넘겠지

Jimin_Note·2022년 5월 12일
0

[백준/Python]

목록 보기
14/20
post-thumbnail

💾4344)평균은 넘겠지

📍문제 해석

첫 줄에서 테스트 케이스의 개수를 입력 후 enter.

두번째 줄부터는 테스트에 참여한 학생 수를 입력하고 띄어쓰기로 각 학생 별 시험 점수를 입력한다.

enter하면 테스트를 본 학생들 중에서 평균점수을 넘은 학생들의 비율을 반올림하여 소수점 셋째 자리까지의 출력값이 나타난다.

그 다음 두번째 시험시작 -> 학생 수 입력 후 띄어쓰기로 각 학생 별 시험점수 입력 & 출력 반복.

처음에 입력한 테스트의 개수만큼 반복이 끝나면 프로그램도 끝.

📍주의해야할 부분

  • 학생 수와 학생별 점수를 한 줄에 입력받아야함.
  • 모든 학생의 점수가 0 일 경우
  • 모든 학생의 점수가 똑같을 경우
  • 시험을 친 학생 수보다 점수입력 횟수가 많을 경우
C=int(input())  #테스트케이스의 수 입력


for i in range(C):  #테스트케이스의 수만큼 반복
 n = list(map(int, input().split())) #공백으로 입력받기
 b=[] #평균값을 넘는 점수 저장할 배열선언
 for j in range(1,len(n)): #입력받은 점수개수 만큼 반복(0부터 반복하면 학생수를 쓴 n[0]도 돌아가니까 1부터!)
   if n[j] > sum(n[1:])/int(n[0]): #n[1:j] 점수 중 평균값을 넘을때
    b.append(n[j]) #평균값넘으면 배열b에 넣기
  
 if len(b)>0: #배열 b가 0보다 클때
  print('{:.3f}'.format(round((100/((len(n)-1)/len(b))), 4))+"%") #
 else: #배열 b가 0이거나 0보다 작으면
  print('0.000%')

📍코딩정리

👉 학생 수와 학생별 점수를 입력받을 리스트 선언
n 을 리스트로 선언하여 split() 을 이용하여 공백으로 값 입력받아 저장

n = list(map(int, input().split()))

👉 평균값 넘는 학생찾기
입력받은 점수개수 만큼 반복

for j in range(1,len(n)): #입력받은 점수개수 만큼 반복(0

입력받은 점수구간에서만 반복시키기 위해 range(1,len(n))
, n[1] 부터 반복시작

  • n[0] : 학생수
  • n[1]~n[j] : 학생수대로 점수 입력받은 구간
if n[j] > sum(n[1:])/int(n[0]): #n[1:j] 점수 중 평균값을 넘을때
    b.append(n[j]) #평균값넘으면 배열b에 넣기
  • sum(n[1:]) / int(n[0]) : 총 점수의 합 / 학생수

👉 평균값 넘는 학생비율(%) 출력

if len(b)>0: #배열 b가 0보다 클때
  print('{:.3f}'.format(round((100/((len(n)-1)/len(b))), 4))+"%") #
 else: #배열 b가 0이거나 0보다 작으면
  print('0.000%')
  • (100 / ((len(n)-1) / len(b)) = 평균점수를 넘은 학생비율
    : 100 / ( 입력받은 점수의 개수 / 평균값을 넘은 점수의 개수 )
  • round(x,4) : 넷째자리에서 반올림
  • '{ : .3f}' . format : 소수점 셋째자리까지 출력
    정수값이어도 소수점 셋째자리까지 출력된다
    ex) 3.000 , 5.200 , 6.780 ...
profile
Hello. I'm jimin:)

0개의 댓글