본문 바로가기

SWEA/D2

[SWEA 1984][D2][JAVA] 중간 평균값 매기기

[문제]

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pw_-KAdcDFAUq&categoryId=AV5Pw_-KAdcDFAUq&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

www.swexpertacademy.com

 

[풀이 방법]

 

입력 받은 수들을 올림차순 혹은 내림차순으로 소트하고 맨 앞과 맨 뒤 원소를 제외한 수들을 모두 더해 평균을 구합니다. 

평균은 Double로 해야 소수점 첫번째 자리에서 반올림이 가능하기 때문에 int가 아닌 Double로 선언한 후 평균을 더할 때 역시 int가 아닌 Double 형으로 바꾸어서 계산해야지 옳은 결과를 얻을 수 있습니다. 

 

소수점 첫번째 자리에서 반올림하는 연산은 Math.round로 손쉽게 해결할 수 있습니다. 

 


        for (int k = 0; k < T; k++) {

            sf.append("#" + (k+1+ " ");

            st = new StringTokenizer(br.readLine());

            

            int[] nums = new int[COUNT+1];

            for (int i = 1; i <= COUNT; i++)

                nums[i] = Integer.parseInt(st.nextToken());

 

            Arrays.sort(nums);

            

            int sum = 0;

            for (int i = 1; i <= COUNT; i++) {

                if (i == 1 || i == COUNT) continue;

                sum += nums[i];

            }

            

            double avg = Math.round(sum / (double)(COUNT-2));

            

            sf.append(Math.round(avg) + "\n");

        }