https://www.acmicpc.net/problem/6986
6986번: 절사평균
첫째 줄에 절사평균(N, K)를, 둘째 줄에 보정평균(N, K)를 각각 소수점이하 셋째 자리에서 반올림하여 둘째 자리까지 출력한다. 예를 들어 결과값이 9.667인 경우 9.67로, 5인 경우 5.00으로, 5.5인 경우
www.acmicpc.net
[난이도] Silver3
[유형] 수학
[풀이]
double형으로 입력을 받고 문제의 조건대로 평균들을 구해주면 됩니다.
반올림 처리가 중요한데.
a라는 숫자를 소숫점 3번째에서 반볼림을 하려면
floor(a*100+0.5)/100 와 같이 floor 함수를 이용해주면 됩니다.
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int N,K;
double a[100001];
int main(){
scanf("%d%d",&N,&K);
for(int i=1;i<=N;i++) scanf("%lf",&a[i]);
sort(a+1,a+N+1);
double sum=0;
for(int i=K+1;i<=N-K;i++){
sum+=a[i];
}
double t = sum / (N-2*K);
printf("%.2lf\n",floor(t*100+0.5)/100);
for(int i=1;i<=K;i++){
a[i]=a[K+1];
a[N-i+1] = a[N-K];
}
sum=0;
for(int i=1;i<=N;i++) sum+=a[i];
t = sum / N;
printf("%.2lf",floor(t*100+0.5)/100);
}
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Silver3/6986.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Bronze3] 10833 : 사과 (C++) (0) | 2022.08.21 |
---|---|
[BOJ/백준][Bronze4] 10162 : 전자레인지 (C++) (0) | 2022.08.21 |
[BOJ/백준][Bronze1] 1268 : 임시 반장 정하기 (C++) (0) | 2022.08.21 |
[BOJ/백준][Silver1] 2302 : 극장 좌석 (C++) (0) | 2022.07.21 |
[BOJ/백준][Silver2] 2304 : 창고 다각형 (C++) (0) | 2022.07.21 |