백준/단계별

백준 4344 C#) 평균은 넘겠지

alpacadabra 2022. 4. 18. 19:52

문제 자체는 어렵지 않지만 출력 형식이 소수점을 포함한 퍼센테이지로 지정되어 있다.

 

int c = int.Parse(Console.ReadLine());

int[] scores;
double avg;
int cnt;

while (c-- > 0)
{
    scores = Array.ConvertAll(Console.ReadLine().Split()[1..], int.Parse);
    avg = scores.Average();
    cnt = scores.Count(score => score > avg);

    Console.WriteLine("{0:F3}%", (double)cnt / scores.Length * 100);
}

 

함수나 메소드들을 잘 활용하면 비교적 간결하고 직관적인 코드를 작성할 수 있다. 위 코드를 보면 메소드명만 봐도 무슨 작업을 하는지 바로 알 수 있다.

물론 원소들을 일일이 셈해도 상관없다. 오히려 그게 더 빠를 수도 있다.

다만 성능에 큰 차이가 없다면 가독성이 좋은 코드가 더 좋지 않을까 싶다.

(이 코드가 그렇다는 뜻은 아니다)

 

출력 형식에 관해서는 아래 문서를 읽어보자.

 

 

표준 숫자 서식 문자열

이 문서에서는 .NET에서 표준 숫자 서식 문자열을 사용하여 일반적인 숫자 형식을 텍스트 표현으로 서식 지정하는 방법을 알아봅니다.

docs.microsoft.com