본문 바로가기
IT/알고리즘(Algorithm)

[C#]백준 4344번 문제 풀이

by 공부하는개미 2021. 9. 9.
반응형

# 문제 출제 사이트

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

 

4344번: 평균은 넘겠지

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

www.acmicpc.net

 

# 문제

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

 

# 입력

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

# 출력

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.

 

 

# 첫번째 제출한 소스코드

using System;

namespace ConsoleAppAlgorithm
{
    class baek4344
    {
        static void Main()
        {
            int c = int.Parse(Console.ReadLine());

            float[] numArray = new float[c];
            float[] avgArray = new float[c];
            for (int i = 0; i < c; i++)
            {
                float[] score = Array.ConvertAll(Console.ReadLine().Split(), float.Parse);
                float allScore = 0f;
                float avg = 0f;

                for (int j = 1; j <score[0] + 1; j++)
                    allScore += score[j];

                for (int j = 1; j < score[0] +1; j++)
                {
                    if (score[j] > allScore / score[0])
                        avg++;
                }
                numArray[i] = score[0];
                avgArray[i] = avg;
            }

            for (int i = 0; i < numArray.Length; i++)
                Console.WriteLine($"{string.Format("{0:0.000}", (avgArray[i] / numArray[i]) * 100)}%");
        }
    }
}

 

 

 

# 두번째 제출한 소스코드

using System;

class baek4344
{
    static void Main()
    {
        int C = int.Parse(Console.ReadLine());
        for (int i = 0; i < C; i++)
        {
            float[] score = Array.ConvertAll(Console.ReadLine().Split(), float.Parse);
            float allScore = 0f, avg = 0f;

            for (int j = 1; j <score[0] + 1; j++)
                allScore += score[j];

            for (int j = 1; j < score[0] +1; j++)
                if (score[j] > allScore / score[0]) avg++;

            Console.WriteLine($"{string.Format("{0:0.000}", (avg / score[0]) * 100)}%");
        }
    }
}
  • 네임스페이스 제거
  • numArray, avgArray <--- 불필요한 배열 선언 제거
  • for, if문 안에 한줄 짜리 코드만 있으면 컬리브라켓("{ }") 삭제

반응형