개발에 AtoZ까지

[JAVA][D2] 1986. 지그재그 숫자 본문

코딩테스트 준비/SWEA

[JAVA][D2] 1986. 지그재그 숫자

AtoZ 개발자 2021. 1. 7. 00:52
반응형

문제 

10개의 수를 입력 받아, 최대 수와 최소 수를 제외한 나머지의 평균값을 출력하는 프로그램을 작성하라.

(소수점 첫째 자리에서 반올림한 정수를 출력한다.)


[제약 사항]

각 수는 0 이상 10000 이하의 정수이다.


[입력]

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 10개의 수가 주어진다.


[출력]

출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.

(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

예시

 

풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Solution {
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		try {
			//꼭 10개의 숫자뿐만이 아니라 그 이상이 들어오더라도 동작하게끔 코딩
			//테스트 수
			int T = Integer.parseInt(br.readLine());
			for(int i=1;i<=T;i++) {
				StringTokenizer st = new StringTokenizer(br.readLine()," ");
				//배열의 크기
				int legnth=st.countTokens();
				int[] nums=new int[legnth];
				int sum=0;
				//숫자 저장소
				for(int a=0;a<nums.length;a++) {
					nums[a]=Integer.parseInt(st.nextToken());
				}
				//정렬
				Arrays.sort(nums);
				//왼쪽에서 첫번째 오른쪽에서 첫번째를 제외하고 합계 추출
				for(int b=1;b<nums.length-1;b++) {
					sum+=nums[b];
				}
				System.out.println("#"+i+" "+Math.round(sum/(double)(legnth-2)));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

반응형
Comments