[programmers][Weekly Challenge][2週間]相互評価


質問する


問題の説明


大学教授であるあなたは、相互評価を通じて学生たちに提出した宿題に加点したいと思っています.
以下は、0~4番の5人の学生が自分と他の学生の宿題に対する採点表です.

上記の点数表では、i行j列の値は、i番学生が評価したj番学生の宿題点数である.
  • 0番生徒評価の点数は0番行中の[100,90,98,88,65]である.
  • 0番は100点、1番は90点、2番は98点、3番は88点、4番は65点.
  • 2番生徒評価の点数は2行目である[47,88,95,80,67].
  • 2番は0番が47点、1番が88点、自分が95点、3番が80点、4番が67点.
  • 学生ごとに得られる点数の平均値を求め、基準に従って単位を与えたいと思っています.
    学生が自分の点数が唯一の最高点または唯一の最低点であると評価した場合、それ以外は平均値を求める.
  • 0番生徒が獲得した点数は0番列の[100,50,47,61,24]である.自己評価の100点は自分が獲得した点数の中で唯一の最高点であり、平均を求める場合を除く.
  • 0番生徒の平均点は(50+47+61+24)/4=45.5.
  • 4番生徒が獲得した点数は4番列の[65,77,67,65,65]であった.自分の65点を評価するのは自分が得た点数の中で最低点だが、同じ点数はまだ2つあり、唯一の最低点ではない.したがって、平均値を求める場合は除外されません.
  • 4番生徒の平均点は(65+77+67+65+65)/5=67.8.
    除外する点数を除いて、平均点数を求め、以下の基準で単位を与えます.

  • 学生スコアを含む整数型2 D配列スコアをパラメータとします.このとき、解関数を完了し、学生の単位を求めて文字列にして返してください.

    せいげんじょうけん

  • 2≦点数の行の長さ(生徒数)≦10
  • 分数の列長=分数の行長
  • つまり、分数は行と列の長さが等しい2次元配列である.
  • 0≦分数の元素≦100
  • 戻り値フォーマット
  • 0番学生の単位から順に接続された文字列を返します.
  • I/O例



    に答える


    コード#コード#

    def solution(scores):
        answer = ''
        scores = [list(x) for x in zip(*scores)]
        answer = ''
        for i in range(len(scores)):
            selfs = scores[i][i]
            if (selfs == max(scores[i]) or selfs == min(scores[i])) and scores[i].count(selfs) == 1:
                scores[i][i] = -1
        for i in range(len(scores)):
            n = len(scores[i])
            su = sum(scores[i])
            if scores[i][i] == -1:
                n -=1
                su +=1
            mean = su/n
            if mean >= 90:
                answer += 'A'
            elif mean >= 80:
                answer += 'B'
            elif mean >= 70:
                answer += 'C'
            elif mean >= 50:
                answer += 'D'
            else:
                answer += 'F'
        return answer

    に答える


    まず、マトリクスの行と列を変換して、学生が得た点数を理解します.
    その後、点数が除外された場合、自己評価の点数が唯一の最高点または唯一の最低点である場合、その点数を除外する.
    除外されない点数の平均値を求め、単位を算出した.

    ポスト


    これは簡単な問題だ.