Lumpy Space Princess - Adventure Time
코딩테스트/백준

백준 [4344] - 평균은 넘겠지

yaebb_82 2022. 8. 9.

 

 

 

문제

 

 

 

작성한 코드

import sys

input = sys.stdin.readline

C = int(input())

for i in range(C):
    num_grades = list(map(int, input().split()))
    avg = sum(num_grades[1:])/num_grades[0]
    students = 0

    for i in range(1, len(num_grades)):
        if num_grades[i] > avg:
            students += 1

    ratio = (students / num_grades[0]) * 100
    print(f"{ratio:.3f}%")

- sys.stdin.readline을 input에 할당하여 사용하였다.

- input()으로 문자를 입력받고, int형으로 형변환하여 C에 저장한다. (C는 테스트케이스 개수)

- for i in range(C): 테스트케이스 개수만큼 반복문 for문을 반복한다.

- input()으로 문자를 입력받고, split()으로 구분한 뒤, int형으로 형변환하여 list인 num_grades에 map()으로 각각 할당해준다. (학생 수와 학생들의 점수를 같이 입력받는다.)

- num_grades의 0번 인덱스인 학생 수를 제외하고 sum()으로 합을 구한뒤, num_grades의 0번 인덱스인 학생 수로 나누어 주면 평균을 구할 수 있고, 이를 avg에 저장한다.

- 평균을 넘는 학생들의 수를 나타내는 students를 0으로 초기화 시켜준다. (각 테스트케이스 별로 평균을 넘는 학생들의 수는 다르기 때문에)

- for i in range(1, len(num_grades)): 학생 수를 나타내는 0번 인덱스를 제외하고, num_grades의 길이만큼 반복문 for문을 반복하여 평균을 넘는 학생들의 수를 구한다.

- 만약 평균 값을 넘는다면, 평균을 넘는 학생들의 수를 나타내는 students를 +1씩 증가한다.

- 평균을 넘는 학생들의 비율은 (students / num_grades[0] (=전체 학생 수)) * 100 (%로 계산) 이렇게 계산하여 ratio에 저장한다.

- 비율을 print()로 출력할 때에 f-string()을 사용하여 %와 같이 출력되게 한다.

   그리고 비율뒤에 (숫자):.3f를 붙여주어 소수점 셋째자리까지 출력되게 한다.

 

 

 

반응형

'코딩테스트 > 백준' 카테고리의 다른 글

백준 [4673] - 셀프 넘버  (0) 2022.08.10
백준 [15596] - 정수 N개의 합  (0) 2022.08.10
백준 [8958] - OX퀴즈  (0) 2022.08.09
백준 [1546] - 평균  (0) 2022.08.08
백준 [3052] - 나머지  (0) 2022.08.08

댓글