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

김예지·2021년 10월 14일
1

문제

https://programmers.co.kr/learn/courses/30/lessons/83201


문제 풀이

코드

function solution(scores) {
    let arr=[], answer='';
    //1. 배열에서 없어져야하는 부분은 0으로 변경하기 
    for(let i=0; i<scores.length; i++){
        let max=Number.MIN_SAFE_INTEGER;
        let min=Number.MAX_SAFE_INTEGER;
    
        for(let j=0; j<scores.length; j++){
            if(i===j) continue;
            else if(i!==j){
                if(scores[j][i]<min) min=scores[j][i];
                else if(scores[j][i]>max) max=scores[j][i];
            }
        }
        if(scores[i][i]>max || scores[i][i]<min) scores[i][i]=0;
    }
    //2. 각 학생의 평균 점수를 구하기 
    for(let i=0; i<scores.length; i++){
        let sum=0;
        let n=scores.length;
        for(let j=0; j<scores.length; j++){
            if(scores[j][i]===0) {
                n--;
                continue;
            }
            sum+=scores[j][i];
        }
        arr.push(parseInt(sum/n));
    }
    //3. 학점 판단
    for(let x of arr){
        if(x>=90) answer+='A';
        else if(x>=80) answer+='B';
        else if(x>=70) answer+='C';
        else if(x>=50) answer+='D';
        else answer+='F'
    }
    return answer;
}

와 완전 직관적으로, 노가다로 풀었다...
처음에는 계속해서 "짧게 만들 수는 없을까? 사용할 수 있는 메소드는 없을까?"이 생각때문에 문제를 못풀었는데, 그냥 직관적으로 풀어보자! 해서 문제를 풀었다. 코드 제출할 때 코드가 길기도 해서 왠지 모르게 자신감이 없었는데, 정답! 이렇게 직관적으로 길게 풀때는, 중간중간 console창에 잘하고 있는지 찍어보면서 풀자. 끝까지 코딩한 다음에 오류를 발견하면, 어디서 문제가 생겼는지 알기 힘드니까!
그리고 생각했을 때 짧게만들 방법이 떠오르지 않는다면, 긴 코드를 두려워하지말자. 생각한대로 제대로 작성만 하면, 풀린다!

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글

comment-user-thumbnail
2021년 10월 26일

10/26
읽기

답글 달기