[파이썬] 4344번:평균은넘겠지

김충섭·2021년 6월 2일
0

백준

목록 보기
33/39
post-thumbnail

한번에 풀리긴 했는데 변수 생성을 많이 한 느낌이 들었다!

C = int(input())

for i in range(C):  # C번 반복
    l = list(map(int, input().split()))  #
    N = l[0]  # 리스트의 첫 요소값은 학생의 수
    total = 0  # 점수 총 합
    avg = 0    # 평균 점수
    pass_ratio = 0  # 평균을 넘는 학생들의 비율
    count = 0  # 평균을 넘으면 카운트 해준다.
    for j in range(N):  # 총 합을 구한다
        total = total + l[j+1]
    avg = total / (len(l) - 1)  # 평균을 구한다.
    for k in range(N):  # 평균을 넘는 학생 수를 구한다
        if l[k+1] > avg:
            count = count + 1
    pass_ratio = count / (len(l) - 1) * 100  # 평균을 넘는 학생들의 비율을 구한다
    print("{0:.3f}%".format(pass_ratio))  # format()을 사용하여 형식을 지정해준다.

구글링하여 괜찮은 솔루션을 찾아보자~~

n = int(input())

for _ in range(n):
    nums = list(map(int, input().split()))
    avg = sum(nums[1:])/nums[0]  # 평균을 구함 (nums[0]: 학생수, nums[1:] 점수)
    cnt = 0
    for score in nums[1:]:
        if score > avg:
            cnt += 1  # 평균 이상인 학생 수
    rate = cnt/nums[0] *100
    print(f'{rate:.3f}%')
  • 배운점
    • sum()를 이용하여 리스트의 합을 쉽게 구할 수 있다.
    • list[1:]처럼 리스트를 전체가 아닌 부분만을 구할 수 있다.
    • 굳이 모든 수를 변수에 담을 필요는 없다.
    • round(40.0, 3)은 40.000이 아니라 40.0을 반환한다. 따라서 "{0:.3f}%".format(40.0))와 처럼 작성하면 40.000을 얻을 수 있다.
profile
나를 위한 개발블로그

0개의 댓글