https://www.acmicpc.net/problem/18110
굉장히 난관이 많았던 문제이다....
1. 반올림을 내장함수가 아닌 직접 구현해야 했다.
2. 런타임 에러 (InvalidOperation) : 0의 경우를 넣지 않아 생긴 문제였다.
3. 시간 초과 : list 대신 int 배열로 바꾸었다.
4. int로 바꾸니 arr.Sum()에서 int로 값이 나와 값이 버려지는 문제가 생겼다. 이는 형식을 double로 바꾸어 해결.
반례도 거의 없던 문제라 정말 힘들었다..!🥲🥲
using System;
using System.IO;
namespace B18110
{
class Program
{
static void Main()
{
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
int n = int.Parse(sr.ReadLine());
int result = 0;
if (n == 0) result = 0;
else
{
int p;
//인원의 15%의 반올림 계산
if ((n * 0.15) % 1 < 0.5) p = (int)(n * 0.15);
else p = (int)(n * 0.15) + 1;
//난이도 입력
double[] arr = new double[n];
for (int i = 0; i < n; i++) arr[i] = (int.Parse(sr.ReadLine()));
//정렬
Array.Sort(arr);
//위 아래 제거
for (int i = 0; i < p; i++) arr[i] = 0;
for (int i = 1; i <= p; i++) arr[n - i] = 0;
//평균
double average = arr.Sum() / (n - p * 2);
//평균의 반올림
if (average % 1 < 0.5) result = (int)average;
else result = (int)average + 1;
}
sw.Write(result);
sr.Close();
sw.Flush();
sw.Close();
}
}
}
'알고리즘 > 백준 BOJ' 카테고리의 다른 글
[ BOJ/C# ] 11050 이항 계수 1 (1) | 2023.10.28 |
---|---|
[ BOJ/C# ] 2108 통계학 (0) | 2023.10.27 |
[ BOJ/C# ] 16928 뱀과 사다리 게임 (0) | 2023.10.24 |
[ BOJ/C# ] 1697 숨바꼭질 (0) | 2023.10.24 |
[ BOJ/C# ] 1654 랜선 자르기 (0) | 2023.10.23 |