https://www.acmicpc.net/problem/2108
이 문제를 통해 float의 문제점을 알 수 있어서 좋았다.
우선 정답이다.
#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
vector<int> v;
vector<int> f;
int listP[4001];
int listM[4001];
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
short temp;
for (int i = 0; i < 4001; i++) {
listP[i] = -1;
listM[i] = -1;
}
for(int i=0; i<n; i++) {
cin >> temp;
v.push_back(temp);
if (temp >= 0) {
listP[temp]++;
}
else {
temp *= -1;
listM[temp]++;
}
}
double sum = 0;
for (int i = 0; i < v.size(); i++) {
sum += v[i];
}
double result = round(sum / n);
if (result == 0) result = 0;
cout << result <<endl;
sort(v.begin(), v.end());
cout << v[v.size() / 2]<<endl;
int freq = 0;
for (int i = 0; i < 4001; i++) {
if (freq < listP[i]) freq = listP[i];
if (freq < listM[i]) freq = listM[i];
}
for (int i = 0; i < 4001; i++) {
if (listP[i] == freq) f.push_back(i);
if (listM[i] == freq) f.push_back((-i));
}
sort(f.begin(), f.end());
if(f.size()>1)
cout << f[1] << endl;
else
cout << f[0] << endl;
cout << v.back() - v.front() << endl;
return 0;
}
처음에 sum변수를 float으로 설정해서, 틀렸습니다가 계속 나왔다.
float 형의 부동소수점 문제에 대해서 알아봤다.
https://wannadev.tistory.com/82
'코딩테스트_백준풀이' 카테고리의 다른 글
블랙잭 #2798 c++ 풀이 (0) | 2023.10.12 |
---|---|
카드2 #2164 c++ 풀이 (0) | 2023.10.12 |
수 정렬하기3 #10989 c++ 풀이 (1) | 2023.10.10 |
소수 구하기 #1929 c++ 풀이 (0) | 2023.10.10 |
랜선 자르기 #1654 c++ 풀이 (0) | 2023.10.06 |