![[백준 C++] 18110 : solved.ac](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGUR4J%2FbtsK1XY2FIh%2FCrHo7LQ53oGXWlurUUthc1%2Fimg.png)
[백준 C++] 18110 : solved.acCSE/코딩 문제풀이2024. 11. 30. 13:22
Table of Contents
https://www.acmicpc.net/problem/18110
위 아래 각각 15%제외한 나머지 값의 평균을 구하는 문제이다.
모든 값에 반올림이 필요한데, c++의 경우 11버전 이상이기만 하면 round함수로 간단하게 반올림을 진행할 수 있다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
int N;
int ans = 0;
double sum = 0;
vector<int> list;
cin >> N;
if (N != 0)
{
for (int i = 0; i < N; i++)
{
int temp;
cin >> temp;
list.push_back(temp);
}
sort(list.begin(), list.end());
int exception = round(N * 0.15);
for (int i = exception; i < N - exception; i++)
sum += list.at(i);
ans = round(sum / (N - (2 * exception)));
}
cout << ans << endl;
return 0;
}
이 코드에서 주의할 점은 정수가 아닌 실수들을 취급할 때 이다.
sum을 사용하지 않고 ans로 계산하였을때는 항상 5%에서 틀렸습니다가 발생하였다..
round()함수 내에서 계산할 때 그 안에 값들에서 소숫점 아래 값들이 짤리는 문제가 있었던 것이라고 추측하여, double형인 sum을 사용하였더니 바로 통과하였다.
'CSE > 코딩 문제풀이' 카테고리의 다른 글
[백준 C++] 11723 : 집합 (0) | 2024.12.03 |
---|---|
[백준 C++] 1874 : 스택 수열 (0) | 2024.12.02 |
[백준 C++] 10773 : 제로 (0) | 2024.11.29 |
[백준 C++] 4949 : 균형잡힌 세상 (0) | 2024.11.29 |
[백준 C++] 7568 : 덩치 (0) | 2024.11.28 |
@NiffJB :: 개발하는 니프
CSE & GAME 개발 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다!