CHashtag

[프로그래머스] [C#] 상호평가 본문

알고리즘

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

HyoSeong 2021. 9. 9. 00:43
반응형

안녕하세요.

오늘은 프로그래머스 코딩테스트 연습 문제인 "부족한 금액 계산하기" 을 풀어보았습니다.

 

문제 링크


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

 

 

문제 풀이 방법


이번 문제의 풀이는 주석으로 달아두었습니다.

 

또한 이번 문제는 평균 약 0.37ms 정도의 속도로 테스트를 통과하였습니다.

 

 

public string solution(int[,] scores)
{
    string answer = string.Empty;

    // n*n 배열이므로 index는 하나만 구하면 된다.
    int index = scores.GetLength(0);

    for (int i = 0; i < index; i++)
    {
        int largest = -1;
        int largestCount = 0;

        int smallest = 101;
        int samllestCount = 0;

        int totalScore = 0;

        for (int j = 0; j < index; j++)
        {
            totalScore += scores[j, i];

            if (scores[j, i] > largest)
            {
                largest = scores[j, i];
                largestCount = 1;
            }
            else if (scores[j, i] == largest)
            {
                largestCount++;
            }
            else if (scores[j, i] < smallest)
            {
                smallest = scores[j, i];
                samllestCount = 1;
            }
            else if (scores[j, i] == smallest)
            {
                samllestCount++;
            }
        }

        int totalScoreAvg;

        // 유일한 최고점
        if (largest == scores[i, i] && largestCount == 1)
        {
            totalScore -= largest;
            totalScoreAvg = totalScore / (index - 1);
        }
        // 유일한 최저점
        else if (smallest == scores[i, i] && samllestCount == 1)
        {
            totalScore -= smallest;
            totalScoreAvg = totalScore / (index - 1);
        }
        else
        {
            totalScoreAvg = totalScore / index;
        }

        // switch-case 문을 사용하기 위해 10으로 나누어줌.
        totalScoreAvg /= 10;

        switch (totalScoreAvg)
        {
            case 10:
            case 9:
                answer += "A";
                break;
            case 8:
                answer += "B";
                break;
            case 7:
                answer += "C";
                break;
            case 6:
            case 5:
                answer += "D";
                break;
            default:
                answer += "F";
                break;
        }
    }

    return answer;
}

 

 

감사합니다.

반응형