Notice
Recent Posts
Recent Comments
Link
알고리즘 모음(C++)
백준 18110 - solved.ac(C++) 본문
문제 링크입니다. https://www.acmicpc.net/problem/18110
반올림과 평균을 구하는 코드를 요구하는 문제입니다.
이 문제를 푸는 요점은 반올림을 하는 코드를 구할 수 있는지였습니다.
반올임을 하기 위해선, 일단 double형을 통해 소수점을 포함한 값을 저장합니다.
그 다음, 해당 값을 int형으로 변환시킨 값을 만들어줍니다. -> 해당 과정은 소수점을 없애줍니다.
두 값을 뺐을 때, 0.5이상이라면 +1을 해주면 됩니다.
주의할 점은, 0개가 들어왔을 경우에는 항상 값이 0이라는 점과
더할 때 값은 항상 오름차순 혹은 내림차순으로 정렬되어 있어야 한다는 점입니다.
자세한 것은 코드를 참고해주세요.
#define _CRT_SECURE_NO_WARNINGS
#include <cstring>
#include <vector>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cmath>
#include <cstdio>
#include <string>
using namespace std;
int N;
vector<int> score;
void solve(){
double cut = (double)N * 0.15;
int point = N * 0.15;
if(cut - (double)point >= 0.500) point += 1;
// 15%의 인원을 구하기
sort(score.begin(), score.end());
double sum = 0.0;
for(int i = point; i < score.size()-point; i++){
sum += (double)score[i];
}
sum /= (double)(score.size() - 2*point);
// 평균 구하기
if(sum - (int)sum >= 0.500) cout << (int)sum + 1;
else cout << (int)sum;
}
int main() {
cin.tie(0);
cout.tie(0);
cin >> N;
for(int i = 1; i <= N; i++){
int x;
cin >> x;
score.push_back(x);
}
if(N == 0) cout << "0";
else solve();
return 0;
}
질문 및 조언은 댓글을 남겨주세요.
'백준' 카테고리의 다른 글
백준 2151 - 거울 설치(C++) (0) | 2023.12.07 |
---|---|
백준 20529 - 가장 가까운 세 사람의 심리적 거리(C++) (1) | 2023.12.07 |
백준 17270 - 연예인은 힘들어(C++) (2) | 2023.12.03 |
백준 23801 - 두 단계 최단 경로 2(C++) (0) | 2023.12.01 |
백준 22865 - 가장 먼 곳(C++) (2) | 2023.11.30 |