미누에요

[백준 18110번] solved.ac 본문

알고리즘

[백준 18110번] solved.ac

미누라니까요 2025. 2. 3. 15:48
728x90
반응형
SMALL

 

 

이 문제는 데이터의 개수와 데이터를 순차적으로 받아 절사평균을 구하는 문제이다.

 

절사 평균이란, 상위 및 하위에서 특정 범위를 제거한 후에 측정한 평균이다.

예를 들어, 30% 절삭평균은 상위 하위 각각 15%를 삭제하고 남은 데이터를 가지고 평균을 구한 값이다.

 

 

처음에는 data에 각각 15%의 개수만큼 pop()과 shift()를 수행했지만, 문제에서 오답이라고 판단하여 slice를 사용하여 배열을 부분적으로 잘라내 사용하였다.

 

 

 

소스 코드

const input = require('fs')
	.readFileSync('/dev/stdin')
	.toString()
	.trim()
	.split('\n');

const n = Number(input[0]);

if (n === 0) {
	console.log(0);
	return;
}

let data = input
	.slice(1)
	.map(Number)
	.sort((a, b) => a - b);

const exclude = Math.round(n * 0.15);

data = data.slice(exclude, n - exclude);

const sum = data.reduce((acc, val) => acc + val, 0);
const average = Math.round(sum / data.length);

console.log(average);
728x90
반응형
LIST