프로그래머스 위클리 챌린지 2주차

.·2021년 8월 9일
0

알고리즘

목록 보기
14/21
function solution(scores) {
        let answer = [];
        for (let i = 0; i < scores.length; i++) {
          let studentScores = [];
          let max = -Infinity;
          let min = Infinity;
          for (let j = 0; j < scores.length; j++) {
            const score = scores[j][i];
            studentScores.push(score);
            if (i !== j && score > max) max = score;
            if (i !== j && score < min) min = score;
            //자기 자신이 평가한 점수가 유일 최고점이거나 유일 최저점일 때 제거해주기
          }
          if (studentScores[i] > max || studentScores[i] < min)
            studentScores.splice(i, 1);
          answer.push(studentScores);
        }
        //평균값 구하기
        answer = answer.map((array) => {
          const average =
            array.reduce((pre, cur) => pre + cur, 0) / array.length;
          if (average >= 90) return "A";
          if (average >= 80) return "B";
          if (average >= 70) return "C";
          if (average >= 50) return "D";
          if (average < 50) return "F";
        });

        return answer.join("");
      }

코드설명

  1. 2차원 배열이라 2중 for문 을 돌면서 해당학생이 받은 점수들을 추출했다
  • i(열)을 고정시키고 행을 돌면서 배열을 따로 만들어 주었다
  1. 자기 자신이 평가한 점수가 유일한 최고점이거나 유일한 최저점일 때 평균에 포함시키면 안되므로
  • 최고점과 최저점을 저장해두는데 자기자신이 평가한 경우는 제외해둔다
    j 에 대해 for 문을 돌면 한 학생이 받은 점수들에 대해 배열이 만들어지는데
    = > studentScores
    i 번째 index가 자기자신이 평가한 점수가 된다
    = > studentScores[ i ]
    studentScores[ i ]가 max 보다 크면 유일한 최고점, min보다 작으면 유일한 최저점이 된다
    이 경우 해당 index를 splice해 준 뒤 평균을 구해준다
profile
Divde & Conquer

0개의 댓글

관련 채용 정보