반응형
https://www.acmicpc.net/problem/1546
풀이
#include <iostream>
#include <vector>
int main()
{
using namespace std;
int n;
cin >> n;
vector<double>data(n);
for (int i = 0; i < n; i++)
{
cin >> data[i];
}
int M = 0;
for (int i = 0; i < n; i++)
{
if (data[i] > M)
M = data[i];
}
double sum = 0;
for (int i = 0; i < n; i++)
{
data[i] = (double)data[i] / M * 100;
sum += (double)data[i];
}
cout << (double)sum / n << endl;
return 0;
}
문제 자체는 어렵지 않지만 소수점이 나오기 때문에 웬만해선 double로 해주는 것이 좋습니다. 저 같은 경우는 오름차순에서 sort()를 쓸 수도 있지만 그냥 저런 식으로 최대값을 구하는 M을 만들어서 for문을 통해 풀어줬습니다.
이후 나머지도 for문을 통해 출력까지 갔습니다.
이 때 주의해야 할 점이 바로 소수점의 경우 계산이 잘못될 경우 큰 오류가 발생할 수 있기 때문에 정수형과 소수형의 사용을 주의해주셔야 합니다. 만약 정수와 실수 혼합문제가 있을 경우 자동으로 float와 double형 변환이 일어나기 때문에 문제가 발생하지는 않습니다.
하지만 오류가 발생할 수 있으므로 어디서든 float와 double로 형변환을 해주는 것을 추천드립니다.
해당 문제는 여러가지 풀이가 있을 수 있습니다.
반응형
'IT 프로그래밍 > 백준' 카테고리의 다른 글
[C++] 백준 10810번 공넣기 (0) | 2024.03.18 |
---|---|
[C++] 백준 2562 최댓값 (0) | 2024.03.16 |
[C++] 백준 10818 최소, 최대 (0) | 2024.03.16 |
백준 10807 개수 세기 (0) | 2024.03.16 |
[C++] 25304 영수증 (0) | 2024.03.15 |