백준[1546]
문제
1546번
풀이
- 입력받은 n의 크기와 같은 배열을 동적 할당한다.
- 배열에서 최댓값을 구해준다.
- 문제의 조건과 같이 바꾸어 계산해준다.
#include <iostream>
using namespace std;
int main(void) {
int n;
double sum = 0;
cin >> n;
int* arr = new int[n];
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
int max = arr[0];
for (int i = 0; i < n; i++) {
if (max < arr[i])
max = arr[i];
}
for (int i = 0; i < n; i++) {
sum += (double)arr[i] / max * 100;
}
cout << sum / n;
}
느낀점
- 처음 코드는 예상한 값과 전혀 다른 결과가 나왔다.
- arr[i] / max에서 int형으로 선언되어 있는 변수를 나누었다.
결과적으로 소수 부분의 값이 없어졌고, 오차가 발생했다.
- 변수 하나를 double형으로 바꾸어 계산해주었다.