Notice
Recent Posts
Recent Comments
Link
초보 개발자의 일기
4344번 - 평균은 넘겠지 본문
문제
대학생 새내기들의 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