본문 바로가기

Baekjoon/C++

[C++][BOJ/백준] 4344 평균은 넘겠지

 

 

Baekjoon Online Judge

 

4344번: 평균은 넘겠지

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 정답과 출력값의 절대/상대 오차는 10-3이하이면 정답이다.

www.acmicpc.net

 

 

[문제]

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

 

 

[입력]

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

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

 

 

[출력]

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 정답과 출력값의 절대/상대 오차는 10-3이하이면 정답이다.

 

 


 

[코드]

#include <iostream>
using namespace std;

int main()
{
    int C, N;

    cin >> C;

    for (int i = 0; i < C; i++)
    {
        cin >> N;

        int sum = 0, cnt = 0;
        int* a = new int[N];

        for (int j = 0; j < N; j++)
        {
            cin >> a[j];
            sum += a[j];
        }

        sum /= N;

        for (int j = 0; j < N; j++)
        {
            if (a[j] > sum)
                cnt++;
        }

        printf("%.3f%%\n", (100.0 / N) * cnt);
    }

    return 0;
}

예제 출력이 올바르게 나오는데도 두 번이나 16%에서 실패로 떴다.

질문 게시판에 가보니 '16%에서 틀립니다. 도와주세요...'라는 제목의 글을 발견.

내 상황과 똑같아서 바로 읽어봤더니 출력 형식을 맞춰주라는 답변이 있었다.

분명 내 코드의 출력 형식엔 문제가 없었기에 의문을 가지고 예제 출력을 다시 확인했더니

이전에는 안 보였던 % 기호가 눈에 들어오다... 출력 형식에 %를 넣었더니 정답이 떴다.

앞으로는 예제 출력을 잘 확인하자.