Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total



GitHub Contribution
Loading data ...
관리 메뉴

초보 개발자의 일기

4344번 - 평균은 넘겠지 본문

열공일기/코딩연습

4344번 - 평균은 넘겠지

Da다 2021. 5. 25. 10:32
 

4344번: 평균은 넘겠지

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

www.acmicpc.net

문제

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

입력

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

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

출력

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

나의 제출 -Python

이 문제는 정말 오랜 시간이 걸려 풀었다. 처음 시도했을 때 배열에 대한 이해도가 부족했기 때문에 성공하지 못했고, 1차원 배열 단계를 모두 끝내고 배열에 어느정도 익숙해진 지금 다시 도전해 보았다.

테스트케이스의 개수를 받아 저장하고, for문으로 입력받은 테스트케이스의 개수만큼 반복한다. 이후 각 케이스의 맨 앞자리는 '학생 수'로 저장하고, '학생 수'로 다시 for문과 if문을 사용하여 각 점수가 그 케이스의 평균을 넘는지 검사한다.

'평균을 넘는 학생 수'를 result에 저장하고 ((평균을 넘는 학생 수)/(해당 케이스의 학생 수))*100를 계산하여 answer 리스트에 저장한 후, 출력 예제와 동일한 format으로 맞춰준다.

times = int(input())        # 테스트 케이스의 개수
answer = []

for i in range(0,times):    # 테스트 케이스 개수만큼 반복
    case = list(map(int,input().split()))    # case를 입력받는다
    student = case[0]                        # case의 첫 번째 숫자는 '학생 수'
    aver = sum(case[1:])/student		     # 평균을 계산하여 저장						
    result = 0
    for j in range(1,len(case)):             # 학생 수 만큼 for문으로 반복
        if case[j] > aver:					 # 평균을 넘을경우 result +1
            result += 1
    answer.append(result/student*100)        # 비율 계산 후 저장

for i in answer:
    print('{0:0.3f}%'.format(round(i,3)))    # 출력(소수점 3째자리까지 반올림하여 출력)

'열공일기 > 코딩연습' 카테고리의 다른 글

1712번 - 손익분기점  (0) 2021.05.27
2941번 - 크로아티아 알파벳  (0) 2021.05.26
2908번 - 상수  (0) 2021.05.23
1152번 - 단어의 개수  (0) 2021.05.22
1157번 - 단어 공부  (0) 2021.05.21
Comments