우당탕탕 파이썬 with 하루하나 알고리즘

백준 4344 파이썬 - 평균이 넘는 학생들의 비율 구하기!

hyxndy 2022. 3. 31. 14:05

백준 4344번 - 평균은 넘겠지 with python

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

 

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

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

 

https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

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

www.acmicpc.net


이번엔 먼저 코드를 포스팅하고 설명을 진행하겠다.

N = int(input())
for i in range(N):
    A = list(map(int,input().split()))
    count = 0
    avg = sum(A[1:])/A[0]
    for j in range(1,len(A)):
        if (A[j] > avg):
            count +=1
    prob = format((count/A[0])*100,".3f")
    print(str(prob)+"%")

먼저 첫째 줄에 테스트의 개수가 나타나있고, 이 수만큼 반복을 진행해야 하므로 for문을 사용해주어야 한다.

그리고 다음 줄에 입력받은 수를 list로 저장해준다. A에 저장을 해두도록 하겠다.

 

A에서 첫번째 값을 제외한 나머지 값들로 평균을 계산해준다.

그 후, if문을 활용하여 평균이 넘는 친구들만 개수를 세도록 한다. 이 개수를 count라는 변수에 저장을 한다,

이 count를 통해 비율을 계산해주고,

format()함수를 통해 소수점 자리 수를 조정해준다.

소수 셋 째자리까지 출력하기 위해선

format(값,".3f")를 사용한다.

 

마지막으로, %와 같이 출력해주기 위해서 print()함수에 값과 %를 둘다 넣어줘야 한다.

원래 숫자와 문자를 같이 출력하려면 print(수,문자)처럼 콤마(,)로 두 인자를 구분해주어야하는데,

콤마로 구분해주면 그 두 값 사이에 공백이 발생하게 된다.

공백을 출력해주지 않기 위해 값을 문자형으로 바꾸어주고, +로 두 문자를 연결해주면 된다.