[Python] Programmers. 위클리 챌린지 2주차 - 상호평가

위클리 챌린지 2주차 - 상호평가

문제 링크

풀이 코드

  • 구현 연습하기 좋은 문제입니다.
  • 각자가 받은 점수는 세로로 봐야하는 것. 유일한 최저/최고점 처리에만 잘 풀어내면 됩니다.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# 위클리 챌린지 2주차 - 상호평가
def solution(scores):
    answer = ''
    l = len(scores)
    
    mine = [] # 자기가 매긴 값
    for i in range(l):
        for j in range(l):
            if i == j:
                mine.append(scores[i][j])
    
    avg = []
    # 자기가 받은 점수는 세로로 봐야한다.
    for j in range(l):
        m = 200
        m_cnt = 0
        M = -1
        M_cnt = 0
        s = 0
        for i in range(l):
            if m >= scores[i][j]:
                if m == scores[i][j]: # 이미 나온 최저점이라면
                    m_cnt += 1
                else:
                    m_cnt = 1
                m = scores[i][j]
            if M <= scores[i][j]:
                if M == scores[i][j]:
                    M_cnt += 1
                else:
                    M_cnt = 1
                M = scores[i][j]
            s += scores[i][j] # 일단 다 더해줌
            
        if mine[j] == m and m_cnt == 1: # 유일한 최저점이라면
            s -= m
            avg.append(s/(l-1))
        elif mine[j] == M and M_cnt == 1: # 최저점==최고점이면 어차피 제외 안 해서 elif로
            s -= M
            avg.append(s/(l-1))
        else:
            avg.append(s/l)
    
    # 학점 매겨주기
    for a in avg:
        if a>=90:
            answer += "A"
        elif a>=80:
            answer += "B"
        elif a>=70:
            answer += "C"
        elif a>=50:
            answer += "D"
        else:
            answer += "F"
    return answer

비고