본문 바로가기
알고리즘/프로그래머스(Python)

[프로그래머스/Python] 위클리 챌린지, 2주차 상호평가

by frog 2021. 10. 9.

[프로그래머스/Python] 위클리 챌린지, 2주차 상호평가


문제

  • 학생들의 점수가 담긴 정수형 2차원 배열 scores가 매개변수로 주어집니다. 이때, 학생들의 학점을 구하여 하나의 문자열로 만들어서 return 하도록 solution 함수를 완성해주세요.

● 소스코드

def score_to_grade(score):
    grade = ''
    if score >= 90:
        grade = 'A'
    elif score >= 80:
        grade = 'B'
    elif score >= 70:
        grade = 'C'
    elif score >= 50:
        grade = 'D'
    else:
        grade = 'F'
    return grade

def solution(scores):
    answer = ''
    for i in range(len(scores)):
        cur = [x[i] for x in scores]
        self_score = cur[i]
        cur.remove(self_score)
        if min(cur) <= self_score and self_score <= max(cur):
            tmp = (sum(cur) + self_score) / (len(cur) + 1)
        else:
            tmp = sum(cur) / len(cur)
        answer += score_to_grade(tmp)   
    return answer

풀이

  • 특별한 알고리즘은 없다.
  • 각 학생마다 점수의 평균을 구하여 학점을 부여한다.
  • 이때 자가평가 점수가 유일한 최솟값이거나 최댓값일때는 평균을 구할때 제외한다.

 

* 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

댓글