너무 길어
scores
의 행의 길이(학생 수) ≤ 10scores
의 열의 길이 = scores
의 행의 길이scores
는 행과 열의 길이가 같은 2차원 배열입니다.scores
의 원소 ≤ 100function solution(scores) {
let averages = [],
result = "";
for (let i = 0; i < scores.length; i++) {
let score = [];
let highest = scores[0][i];
let lowest = scores[0][i];
for (let j = 0; j < scores.length; j++) {
score[j] = scores[j][i];
}
for (let elem of score) {
if (highest < elem) {
highest = elem;
}
if (lowest > elem) {
lowest = elem;
}
}
if (
(score[i] === highest &&
score.filter((e) => e === highest).length === 1) ||
(score[i] === lowest && score.filter((e) => e === lowest).length === 1)
) {
score.splice(i, 1);
}
averages.push(score.reduce((acc, cur) => acc + cur, 0) / score.length);
}
for (let score of averages) {
if (score >= 90) {
result = result + "A";
} else if (score >= 80) {
result = result + "B";
} else if (score >= 70) {
result = result + "C";
} else if (score >= 50) {
result = result + "D";
} else {
result = result + "F";
}
}
return result;
}
단순하기 짝이 없는 코드다.
반복문 돌려서 한 사람의 평가를 한 배열에 담고, 그 배열 속에서 자기가 본인한테 준 점수가 최고점이거나 최하점일때 다른 사람이 준 점수와 겹치지 않는다면 없애고 평균 값을 구한 후 평균값을 구한 배열에 담았다.
그리고 마지막으로 반복문을 한번 더 돌려서 점수에 따라 미리 선언해둔 빈 문자열에 채워넣고 그걸 반환했다.
되게 당연한 코드를 당연하게 써내려갔는데 제출하면서도 이게 안되면 안되지 ㅋㅋ 라는 생각을 가짐과 동시에 분명 말도 안되게 짧게 작성된 코드가 있을거란 생각을 가졌다.
물론, 그런 코드는 있었고 공부 열심해 해야겠구나 다시 한번 생각하게 만들어줬다.
나한테 30줄 넘는 코드를 7줄로
출처: 프로그래머스 코딩 테스트 연습,