[알고리즘] 백준 4344 평균은 넘겠지
문제
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
- 입력
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
- 출력
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다
내 풀이
def getmean(iterable):
sum = 0
for _ in iterable:
sum += _
return sum/iterable.__len__()
loopCount = int(input())
for _ in range(0, loopCount):
values = list(map(float, input().split()))
# 첫번째 데이터 = 학생수 -> pop을 이용해 첫번째 데이터만 꺼냄
num_student = values.pop(0)
# 평균 구하는 함수를 만들어 사용
mean = getmean(values)
# 줄 수를 간소화 하기 위해 filter와 lambda식을 사용
count = list(filter(lambda x: x > mean, values)).__len__()
# 소수 셋째자리까지 구하기 위해 format 사용
# rount를 사용했을 떄 자리수가 안맞아도 0이면 표시를 안함
print("{}%".format(format(count/num_student*100, '.3f')))
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
- 입력
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. - 출력
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다
def getmean(iterable):
sum = 0
for _ in iterable:
sum += _
return sum/iterable.__len__()
loopCount = int(input())
for _ in range(0, loopCount):
values = list(map(float, input().split()))
# 첫번째 데이터 = 학생수 -> pop을 이용해 첫번째 데이터만 꺼냄
num_student = values.pop(0)
# 평균 구하는 함수를 만들어 사용
mean = getmean(values)
# 줄 수를 간소화 하기 위해 filter와 lambda식을 사용
count = list(filter(lambda x: x > mean, values)).__len__()
# 소수 셋째자리까지 구하기 위해 format 사용
# rount를 사용했을 떄 자리수가 안맞아도 0이면 표시를 안함
print("{}%".format(format(count/num_student*100, '.3f')))
오늘은 코드를 간소화하기 위해 노력을 했다. 기능을 다 만들어놓고 어떻게 하면 간소화 시킬 수 있을까 고민하면서 수정을 했다. getmean함수도 간소화 시킬 수 있을 것 같은데... 잘 생각인 안난다.
출처
Author And Source
이 문제에 관하여([알고리즘] 백준 4344 평균은 넘겠지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hyelimchoi1223/알고리즘-백준-4344-평균은-넘겠지저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)