본문 바로가기
Python/알고리즘

[COS PRO 2급 #3-3] 체조 선수의 점수 구하기

by 포푸리 (POPOOLY) 2023. 1. 17.
반응형

문제설명

체조선수는 여러 심사위원의 점수 중 가장 높은 점수 하나와 가장 낮은 점수 하나를 제외하고 나머지 점수들의 평균을 계산하여 최종점수를 받습니다. _단, 이때 소수점 이하의 수는 버립니다._

예를 들어, A 선수가 10명의 심사위원에게 [35, 28, 98, 34, 20, 50, 85, 74, 71, 7]의 점수를 받았습니다. 가장 높은 점수인 98점과 가장 낮은 점수인 7점을 제외하고 나머지 8명의 심사위원 점수 평균을 구하면 49.625점입니다. 여기서 소수점 이하의 수를 버리면 49점입니다. 

각 심사위원이 매긴 점수가 담긴 리스트 scores가 매개 변수로 주어질 때, 이 선수가 받은 점수를 return 하도록 solution 함수를 작성해주세요.

매개변수 설명

심사위원이 준 점수가 들어있는 리스트 scores가 solution 함수의 매개변수로 주어집니다.
* scores의 길이는 3 이상 100 이하입니다.
* 심사위원이 부여하는 점수의 범위는 0 이상 100 이하의 정수입니다.

return 값 설명

심사위원이 준 점수 중 가장 높은 점수와 가장 낮은 점수를 제외한 점수의 평균에서 소수점을 버린 값을 return 합니다.

예시

| scores                                | return |
|-----------------------------------------|--------|
| [35, 28, 98, 34, 20, 50, 85, 74, 71, 7] | 49  |
| [1, 1, 1, 1, 1]                      | 1   |

예시 설명

예시 #1
문제에 나온 예와 같습니다.

예시 #2
가장 높은 점수는 1점이며, 가장 낮은 점수도 1점입니다. 1점을 두 개 제외한 나머지 점수의 합은 3점이며, 평균은 1점이 됩니다.

문제 코드

def solution(scores):
    answer = 0
    #여기에 코드를 작성해주세요.
    return answer

풀이 1

def solution(scores):
    answer = 0
    
    # scores를 오름차순 정렬
    scores.sort()
    
    # min, max를 제외한 scores의 값 덧셈
	for i in scores[1:-1]:
		answer += i
        
    # 평균 계산    
	answer //= (len(scores)-2)
    
    return answer

풀이 2

def solution(scores):
    return (sum(scores) - max(scores) - min(scores)) // (len(scores) - 2)

댓글