Python_알고리즘
[Python] 백준 4344 평균은 넘겠지
hahihuree
2021. 6. 29. 08:37
문제 바로가기
문제분석
# 두 줄에 걸쳐 입력받은 값을 인덱스와 슬라이싱으로 가져와 평균을 구하고, 구한 평균값을 입력받은 각 학생들의 점수와 비교하는 이중 반복문으로 풀이한다.
문제풀이
c = int(input())
for _ in range(c):
nums = list(map(int, input().split()))
ave = sum(nums[1:])/nums[0]
count = 0
for j in nums[1:]:
if j > ave:
count += 1
rate = count/nums[0]*100
print(f"{rate:.3f}%")
# 테스트 케이스 수(c)를 입력받고 그 수만큼 반복을 한다.
# 반복문 안에서 각 테스트 케이스마다 학생수(n)와 n명의 점수를 입력 받는다.
- split으로 입력받은 값을 공백기준으로 나누고, map을 이용해 숫자로 바꿔서 다시 리스트에 저장한다.
# 평균을 구하기 위해 위에서 저장한 리스트 중 제일 앞의 학생수를 제외한 점수를 슬라이스를 통해 가져와 더하고, 첫번째 인덱스인 학생수로 나눈다.
# 평균 이상인 학생수를 카운트 하기 위해 변수를 하나 선언하고 초기화 한다.
# 그렇게 나온 평균 값에서 평균인 학생을 뽑기 위해 다시 반복문을 돌린다.
- 각 학생들의 점수를 하나씩 가져와서 위에서 평균으로 구한 값과 비교한다.
- 평균 이상인 값이 나오면 카운트를 올려 준다.
# 평균을 넘는 비율을 구하라 했으므로 평균이상 학생수를 학생수로 나눠 100을 곱해준다.
추가내용
# f-string을 이용해 중괄호 안에 {변수: .3f}형식으로 출력하고싶은 변수를 넣어 출력한다.
# :.3f 을 사용하여 해당변수의 소숫점 셋쨋자리까지 출력한다.