[BOJ] - 4344

문제 4344번

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

입력

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

출력

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.

코드

num = int(input()) # 테스트 케이스 수

for i in range(num):
    score = list(map(int,input().split()))
    average  = sum(score[1:])/score[0] # 0번째 숫자는 n이라서
    
    count = 0
    
    for j in score[1:]:
        if j > average:
            count += 1 # 평균보다 큰 숫자의 개수 
            
    percentage = count/score[0]*100 #비율 
    
    # round(a,n) a를 소수점 n번째에서 반올림 
    # a = 3.1191 -> round(a,2)   -> 3.12
    
    #반올림해 소수점 셋째자리까지 출력.
    print("%.3f" %round(percentage,3)+'%')
    

    

설명

  1. 처음에 테스트케이스 입력 후 n입력 후, n개만큼 점수를 입력해야하는줄 알고 고민을 했는데 사실 필요없는 부분이었다.,,, 너무 어렵게 생각했다,,

  2. 출력할때 숫자는 맞게 나오는데 백준에서 계속 틀렸다해서 뭐지했는데 반올림부분을 빼먹어서 틀린것,,

  3. 반올림은 round(a,n)으로 a를 소수점n에서 반올림해준다.

  4. 변수선언할때 list로하면 안된다. 변수이름 다르게하기.

좋은 웹페이지 즐겨찾기