본문 바로가기
코딩테스트/백준 알고리즘

백준 알고리즘 | 4344 : 평균은 넘겠지 (Python / 파이썬)

by 함께 공부해요 2020. 9. 17.


평균은 넘겠지 출처다국어분류

시간 제한

메모리 제한

제출

정답

맞은 사람

정답 비율

1 초

256 MB

80917

29913

25930

38.079%

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

 

4344번: 평균은 넘겠지

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

www.acmicpc.net


문제

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

입력

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

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

출력

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


백준 알고리즘 # 4344번 : 평균은 넘겠지

c = int(input())            # 테스트 케이스 수
avg = []                    # 점수의 평균

for _ in range(c):
    n = list(map(int, input().split()))

    sum = 0
    for i in range(n[0]):   # n = [5, 50, 50, 70, 80, 100]
        sum += n[i + 1]     # sum = 350
    
    cnt = 0                 # 평균을 넘는 학생들
    for i in range(n[0]):   # sum / n[0] = 70
        if n[i + 1] > (sum / n[0]):
            cnt += 1

    avg.append((cnt / n[0]) * 100)
    n.clear()               // # 입력받는 n 리스트 초기화

for i in range(c):
    print("%.3f" %avg[i] + "%")

풀이

c 변수로 테스트 케이스 수를 입력받고, avg = [] 변수를 설정해놓는다.

다음으로 for문을 돌리는데 받을 인자가 없기 때문에 "_"로 설정하고

range(c), 즉 입력받은 5만큼 테스트 케이스를 반복해서 돌려준다.

테스트 케이스로 입력되는 것들을 list []로 묶고, map 함수를 이용해서 정수로 각각 따로 입력받는다.

n = [5, 50, 50, 70, 80, 100] ...

그 다음 sum 변수를 0으로 초기화 시키고

for문으로 n에서 점수의 개수를 나타내는 n[0]을 range로 설정하고

n[i + 1] 즉, n[1 ~ 5]까지 5개의 점수를 다 더해주면 sum = 350이 나온다.

그리고 평균을 넘은 학생들을 세어줄 cnt(count) 변수를 0으로 초기화하고

위와 마찬가지로 for문을 점수의 개수만큼 range를 설정한 뒤

평균인 350 / 5 = 70점을 초과하는 개수를 세어준다. (80점, 100점)

cnt = 2

마지막으로 맨 처음 만들어뒀던 avg 변수 리스트에 평균을 넘은 학생을 전체 학생과 나누고 백분율을 나타내기 위해서 100을 곱해서 리스트에 추가(append)해준다.

avg = [40]

그리고 다음 7, 3, 3, 9 테스트 케이스를 진행하기 위해서 clear() 함수를 사용해서

입력받을 n을 초기화 시켜주고 다시 for문을 돌린다.

이렇게 되면 결국 나머지 5개 테스트 케이스의 백분율 결과가 리스트에 추가(append)되고

이 결과를 for문으로 반복해서 "%3.f" 소수점 세 자리까지 표현하고, %avg[i]로 리스트에 있는 하나의 값을 뽑아내고 "%"까지 표시해서 출력하면 끄--읏!!👏

자세한 코드가 궁금하신 분들은 아래 GitHub 참고해주세요🙏

 

wook2124/Algorithm

Practice algorithm. Contribute to wook2124/Algorithm development by creating an account on GitHub.

github.com

최종 소스코드

댓글