Algorithm/EPPER

[EPPER] 11회 7번 단순 계산기

▷ EPPER은 이화여자대학교 소프트웨어학부 졸업시험인 코딩테스트 이름입니다.

EPPER 11회 7번 단순 계산기

문제 설명

  1. 처음에 두 점수를 목록에서 선택해, 두 점수의 평균 m을 구한다. (선택한 두 점수는 목록에서 제거)
  2. 목록에 남아 있는 점수 중 하나를 선택해 앞서 구한 평균 m과의 평균을 구한다.
  3. 목록에 남은 점수가 없을 때까지 2. 반복

목록에서 점수를 선택하는 순서에 따라 평균이 달라진다. n개의 점수가 주어졌을 때 가장 큰 평균값을 구하는 프로그램을 작성하시오.

형식

  • 첫째 줄에 n을 입력한다 (1<=n<=20)
  • n개의 줄에 걸쳐 점수 x를 입력한다 (1<=x<=5)
  • 가장 큰 평균값을 출력한다. (소수 이하 6째 자리까지 출력)

풀이과정

가장 큰 평균값을 구하기 위해서 점수들이 들어있는 리스트 num_arr를 오름차순으로 정렬하면 된다.

코드

def solution(num_arr, n):
    sol = 0
    num_arr.sort()

    if n==1:
        return num_arr.pop(0)

    a, b = num_arr.pop(0), num_arr.pop(0)
    sol = (a+b)/2.0
    while num_arr:
        num = num_arr.pop(0)
        sol = (sol+num)/2.0

    return sol

n = int(raw_input())
num_arr = []
for i in range(n):
    num_arr.append(int(raw_input()))
print("{:.6f}".format(solution(num_arr, n)))

'Algorithm > EPPER' 카테고리의 다른 글

[EPPER] 15회 5번 문자열 압축  (0) 2021.03.05