반응형

문제풀이

1. i 번째 학생이 받은 점수는 각 행의 i번째 요소이다.

2. 모든 행의 i번째 열을 모아 평균을 내되, 본인의 점수가 유일한 최고점 또는 최저점이면 해당 점수는 제외하고 평균을 낸다. (유일한 값인지 확인을 위해 Counter 사용)

3. 평균 점수에 따라 등급을 매긴다.

 

Python Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#https://programmers.co.kr/learn/courses/30/lessons/83201
from collections import Counter
 
def solution(scores):
    answer=''
    for i in range(len(scores)):
        # i가 받은 점수들, tmp[i]는 본인의 점수
        tmp = [scores[j][i] for j in range(len(scores))]
        counter = Counter(tmp)
        mn, mx = min(tmp), max(tmp)
        # 본인의 점수가 유일한 최고/최저값
        if (tmp[i] == mn or tmp[i] == mx) and counter[tmp[i]]==1:
            answer += get_grade((sum(tmp)-tmp[i])/(len(tmp)-1))
        else :
            answer += get_grade(sum(tmp)/len(tmp))
            
    return answer
 
def get_grade(score):
    if score >= 90:
        return 'A'
    elif 80 <= score < 90:
        return 'B'
    elif 70<= score < 80:
        return 'C'
    elif 50 <= score < 70:
        return 'D'
    else:
        return 'F'
cs

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/83201#

 

코딩테스트 연습 - 2주차

[[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] "FBABD" [[70,49,90],[68,50,38],[73,31,100]] "CFD"

programmers.co.kr

 

반응형

+ Recent posts