[BOJ] - 4344
문제 4344번
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
입력
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
출력
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
코드
num = int(input()) # 테스트 케이스 수
for i in range(num):
score = list(map(int,input().split()))
average = sum(score[1:])/score[0] # 0번째 숫자는 n이라서
count = 0
for j in score[1:]:
if j > average:
count += 1 # 평균보다 큰 숫자의 개수
percentage = count/score[0]*100 #비율
# round(a,n) a를 소수점 n번째에서 반올림
# a = 3.1191 -> round(a,2) -> 3.12
#반올림해 소수점 셋째자리까지 출력.
print("%.3f" %round(percentage,3)+'%')
설명
-
처음에 테스트케이스 입력 후 n입력 후, n개만큼 점수를 입력해야하는줄 알고 고민을 했는데 사실 필요없는 부분이었다.,,, 너무 어렵게 생각했다,,
-
출력할때 숫자는 맞게 나오는데 백준에서 계속 틀렸다해서 뭐지했는데 반올림부분을 빼먹어서 틀린것,,
-
반올림은 round(a,n)으로 a를 소수점n에서 반올림해준다.
-
변수선언할때 list로하면 안된다. 변수이름 다르게하기.
Author And Source
이 문제에 관하여([BOJ] - 4344), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@byhazy/BOJ-4344저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)