プログラマコード問題2021、08/24-Lv.1相互評価
[質問]
大学教授であるあなたは、相互評価を通じて学生たちに提出した宿題に加点したいと思っています.以下は、0~4番の5人の学生が自分と他の学生の宿題に対する採点表です.
上記の点数表では、i行j列の値は、i番学生が評価したj番学生の宿題点数である.
学生が自分の点数が唯一の最高点または唯一の最低点であると評価した場合、それ以外は平均値を求める.
学生スコアを含む整数型2 D配列スコアをパラメータとします.このとき、解関数を完了し、学生の単位を求めて文字列にして返してください.
せいげんじょうけん
I/O例説明
I/O例#1
問題の例を以下に示します.
I/O例#2
[回答] function solution(scores) {
let answer = '';
for(let i = 0, len = scores.length; i < len; i++) {
const scoreArr = []; // 학생별 점수 모음
let self = scores[i][i]; // 자기 평가 점수
for(let j = 0; j < len; j++) {
scoreArr.push(scores[j][i]);
}
let min = Math.min(...scoreArr); // 점수 중 최저점
let max = Math.max(...scoreArr); // 점수 중 최고점
let sum = 0; // 점수 합
let count = scoreArr.filter(num => num === self).length;
// 자기 평가 점수랑 같은게 몇 개인지 기록
if((min === self || max === self) && (count === 1)) {
const filterArr = scoreArr.filter(num => num !== self);
sum = filterArr.reduce((acc, num) => acc += num, 0) / (len - 1);
}
else {
sum = scoreArr.reduce((acc, num) => acc += num, 0) / len;
}
answer += checkGrade(sum);
}
return answer;
}
function checkGrade(num) {
if(num >= 90) {
return 'A';
}
else if(num >= 80) {
return 'B';
}
else if(num >= 70) {
return 'C';
}
else if(num >= 50) {
return 'D';
}
else {
return 'F';
}
}
二重複文を用いて,1人の学生の点数だけを抽出して配列する.
それらの点数の中で最高点と最低点を探し,これらの点数を自己評価点数と比較した.
そして自己評価点数と同じ個数を求める.
そして,条件文を用いて自己評価点数が最低か最高か,それにその点数が唯一の点数であることを加えて,自己評価点数を除いて平均する.
上記条件を満たしていない場合は、すべての数字を平均し、最後に平均点に応じて等級を付けてanswer
に順次追加する.
Reference
この問題について(プログラマコード問題2021、08/24-Lv.1相互評価), 我々は、より多くの情報をここで見つけました
https://velog.io/@hemtory/Programmers20210824
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
function solution(scores) {
let answer = '';
for(let i = 0, len = scores.length; i < len; i++) {
const scoreArr = []; // 학생별 점수 모음
let self = scores[i][i]; // 자기 평가 점수
for(let j = 0; j < len; j++) {
scoreArr.push(scores[j][i]);
}
let min = Math.min(...scoreArr); // 점수 중 최저점
let max = Math.max(...scoreArr); // 점수 중 최고점
let sum = 0; // 점수 합
let count = scoreArr.filter(num => num === self).length;
// 자기 평가 점수랑 같은게 몇 개인지 기록
if((min === self || max === self) && (count === 1)) {
const filterArr = scoreArr.filter(num => num !== self);
sum = filterArr.reduce((acc, num) => acc += num, 0) / (len - 1);
}
else {
sum = scoreArr.reduce((acc, num) => acc += num, 0) / len;
}
answer += checkGrade(sum);
}
return answer;
}
function checkGrade(num) {
if(num >= 90) {
return 'A';
}
else if(num >= 80) {
return 'B';
}
else if(num >= 70) {
return 'C';
}
else if(num >= 50) {
return 'D';
}
else {
return 'F';
}
}
Reference
この問題について(プログラマコード問題2021、08/24-Lv.1相互評価), 我々は、より多くの情報をここで見つけました https://velog.io/@hemtory/Programmers20210824テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol