1 분 소요

문제 링크 : 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));
        }
    }
}

댓글남기기