목차

  1. 환경
  2. 문제
  3. 접근법
  4. Library
  5. Code
  6. 정리
  7. Link

1. 환경

Editor: Microsoft Visual Studio Code
Compiler: C++20

2. 문제

Link1 BOJ1546

3. 접근법

알고리즘 분류

  • 수학
  • 사칙연산

평균을 구할 때 분모를 100이 아닌 성적 중 최댓값으로 치환해주면 되는 문제이다.
BOJ1008 - A/B처럼 소수점 출력에 있어 특정한 조건이 주어진다면
printf를 사용하는 방법도 고려할만하다.
하지만 이번 문제는 절대/상대오차가 1e-2이고, 소수 출력시 관여하는 precision
기본적으로 6으로 설정되어있으며, 성적은 정수부가 3글자인 100인 경우밖에 없고,
2글자인 경우는 소수점 밑으로 4번째 자리까지 표기되고, 1글자는 5번째 자리까지 표기된다.
따라서 double을 사용하고 그대로 출력해주면 된다.

4. Library

bits/stdc++.h - Link2
(GNU C++ Standard Library Header - X)
(GCC Compiler Header - O)

5. Code

#include <bits/stdc++.h>

using namespace std;

int N, M;
double numerator, denominator, res;
vector<int> v;

void input();
void func();
void output();

int main(void)
{
    input();
    func();
    output();
}

void input()
{
    int val;
    cin >> N;
    for(int i = 0; i < N; i++)
    {
        cin >> val;
        numerator += val;
        v.push_back(val);
        if(M < val)
            M = val;
    }
    denominator = M;
}

void func()
{
    denominator *= N;
    res = numerator / denominator * 100;
}

void output()
{
    cout << res << '\n';
}

6. 정리

Data type에 의해 실수형 데이터가 정수형으로 표현되는 것에 주의하면 되는 문제이다.

1. BOJ1546 - 평균
https://www.acmicpc.net/problem/1546
2. bits/stdc++.h
https://gcc.gnu.org/onlinedocs/gcc-4.8.0/libstdc++/api/a01541_source.html
3. Cplusplus.com
https://www.cplusplus.com/reference/