프로그래머스_C#/Level_1

[프로그래머스 C#] 2주차 상호 평가

최애뎡 2021. 9. 6. 00:10
728x90
반응형

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

 

코딩테스트 연습 - 2주차

[[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] "FBABD" [[70,49,90],[68,50,38],[73,31,100]] "CFD"

programmers.co.kr

using System;
using System.Collections.Generic;
using System.Linq;

public class Solution {
    string Grade(int avr)
    {
        string grade = "";
        switch (avr)
        {
            case 9 :
                grade = "A";
                break;
            case 8 :
                grade = "B";
                break;
            case 7 :
                grade = "C";
                break;
            case 6 :
                grade = "D";
                break;     
            case 5 :
                grade = "D";
                break;          
            default :
                grade = "F";    
                break;
        }
        return grade;
    }
    
    public string solution(int[,] scores) {
        string answer = "";
        
        int size = scores.GetLength(0);
        int[,] score = new int[size, size];
        
        for (int i = -1; ++i < size;)
        {
            for (int j = -1; ++j < size;)
                if (j != i) score[j, i] = scores[i, j];               
        }   
        
        for (int i = -1; ++i < size;)
        {
            List<int> temp = new List<int>();
            
            for (int j = -1; ++j < size;)
                if (i != j) temp.Add(score[i, j]);
                
            if (temp.Max() >= scores[i, i] && temp.Min() <= scores[i, i])
                temp.Add(scores[i, i]);
            
            answer += Grade((int)temp.Average() / 10);            
        }
            
        return answer;
    }
}

학점 반환하는 매소드 따로 빼놓고... (이걸 괜히 Switch case썼네)

scores를 index 사용하기 쉽게 새 배열 선언해서 값을 넣어 주고 

편할라고 List 그냥 써버리고

본인이 매긴 점수가 유일한 max, min이 아니라면 넣어주고 

Average 넘겨서 학점 받구

반응형