코딩테스트 준비/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();
}
}
}
반응형