ComputerScience/Coding Test

백준 4344번: 평균은 넘겠지

VirtualDever 2022. 11. 11. 20:50

한참 헤메었다.

Visual Studio에서 디버깅 하면서 진행하였다.

소수점 3자리까지 반올림해서 표시하는 부분에서 많이 막혔다.

using System;

class Program
{
    public class TestCaseData
    {
        public int total = 0;
        public int[] scoresArray = null;
        public double average = 0f;
        public double overAverageRate = 0f;
    }

    static void Main(string[] args)
    {
        string stringTestCase = Console.ReadLine();
        int intTestCase = System.Convert.ToInt32(stringTestCase);
        TestCaseData[] datasArray = new TestCaseData[intTestCase];
        
        // 데이터 입력
        for (int i = 0; i < intTestCase; i++)
        {
            string stringCase = Console.ReadLine();
            string[] splitStrings = stringCase.Split(' ', StringSplitOptions.None);
            int number = System.Convert.ToInt32(splitStrings[0]);

            TestCaseData data = new TestCaseData();
            data.total = number;
            data.scoresArray = new int[number];
            for (int j = 1; j <= number; j++)
            {
                data.scoresArray[j - 1] = System.Convert.ToInt32(splitStrings[j]);
            }

            datasArray[i] = data;
        }

        // 평균 구하기
        for (int i = 0; i < datasArray.Length; i++)
        {
            int totalScore = 0;
            for (int k = 0; k < datasArray[i].scoresArray.Length; k++)
            {
                totalScore += datasArray[i].scoresArray[k];
            }

            double average = (double)totalScore / (double)datasArray[i].total;
            //Console.WriteLine("average = " + average);
            datasArray[i].average = average;
        }


        // 평균을 넘는 학생들의 비율 계산
        for (int i = 0; i < datasArray.Length; i++)
        {
            int overCount = 0;
            for (int j = 0; j < datasArray[i].scoresArray.Length; j++)
            {
                if (datasArray[i].average < datasArray[i].scoresArray[j])
                {
                    overCount++;
                }
            }

            datasArray[i].overAverageRate = (double)overCount / (double)datasArray[i].total * 100f;
        }


        // 비율 출력
        for (int i = 0; i < datasArray.Length; i++)
        {   
            string result = string.Format("{0:f3}%", datasArray[i].overAverageRate);
            Console.WriteLine(result);
        }
    }
}

문제 출처

https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net

 

'ComputerScience > Coding Test' 카테고리의 다른 글

백준 7287번: 등록  (0) 2022.11.12
백준 10699번: 오늘 날짜  (0) 2022.11.11
백준 8958번: OX퀴즈  (0) 2022.11.10
백준 1546번: 평균  (0) 2022.11.10
백준 10807번: 개수 세기  (0) 2022.11.10