[C++] 백준 18110번 solved.ac

xyzw·2025년 8월 30일
0

algorithm

목록 보기
76/97

https://www.acmicpc.net/problem/18110

풀이

문제의 내용을 그대로 구현하면 되어서 어려운 문제는 아니었다.

그런데 n이 0일 때, 마지막에 ans를 구하는 부분
ans = round((double)ans / (down_trim - up_trim));에서
down_trim - up_trim이 0이 되기 때문에 이 경우만 예외처리를 해주어야 하는데
이것을 간과하여 처음 제출 시 오답 처리가 되었다.

그래서 아래 코드를 추가하여 해결하였다.

if(n == 0) {
    cout << ans;
    return 0;
}

코드

#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
    int n, ans = 0;
    cin >> n;

    if(n == 0) {
        cout << ans;
        return 0;
    }
    
    vector<int> opinion(n);
    for(int i=0; i<n; i++) {
        cin >> opinion[i];
    }
    
    sort(opinion.begin(), opinion.end());
    
    int up_trim = round(n * 0.15);
    int down_trim = n - up_trim;
    
    for(int i=up_trim; i<down_trim; i++) {
        ans += opinion[i];
    }
    
    ans = round((double)ans / (down_trim - up_trim));
    
    cout << ans;
    
    return 0;
}

0개의 댓글