중간 평균값 구하기
문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5Pw_-KAdcDFAUq&categoryId=AV5Pw_-KAdcDFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1
문제 제목 : 중간 평균값 구하기
10개의 수를 입력 받아, 최대 수와 최소 수를 제외한 나머지의 평균값을 출력하는 프로그램을 작성하라.
(소수점 첫째 자리에서 반올림한 정수를 출력한다.)
[제약 사항]
각 수는 0 이상 10000 이하의 정수이다.
[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 10개의 수가 주어진다.
[출력]
출력의 각 줄은 ‘#t’로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
입력
3
3 17 1 39 8 41 2 32 99 2
22 8 5 123 7 2 63 7 3 46
6 63 2 3 58 76 21 33 8 1
input.txt 출력 #1 18 #2 20 #3 24
output.txt
문제 풀이
import java.util.*;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt(); // 테스트 케이스의 개수 입력
for (int t = 1; t <= T; t++) { // 각 테스트 케이스에 대해 반복
int min = 10000; // 최솟값을 구하기 위한 초기값 설정 (문제에서 주어진 범위를 벗어나는 값으로 초기화)
int max = 0; // 최댓값을 구하기 위한 초기값 설정
int sum = 0; // 숫자들의 합을 저장할 변수
for (int i = 0; i < 10; i++) { // 각 테스트 케이스마다 10개의 숫자를 입력받아 처리
int n = sc.nextInt(); // 숫자 입력 받기
min = Math.min(min, n); // 최솟값 업데이트
max = Math.max(max, n); // 최댓값 업데이트
sum += n; // 숫자들의 합 업데이트
}
// 최솟값과 최댓값을 제외한 나머지 8개의 숫자들의 평균을 구하고 반올림하여 출력
// 평균을 구할 때 sum에서 min과 max를 뺀 후 나누기 8을 하고, 소수점 이하를 반올림하기 위해 Math.round를 사용
System.out.println("#" + t + " " + Math.round(((sum - min - max) * 1.0) / 8));
}
}
}
댓글남기기