반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [SW expert Academy] SWEA 1984번 중간 평균값 구하기 자바(Java)

1) 난이도 : D2

 

2) 문제번호 : 1984번

 

3) 문제 출처

swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5Pw_-KAdcDFAUq&categoryId=AV5Pw_-KAdcDFAUq&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=JAVA&select-1=2&pageSize=10&pageIndex=3

 

SW Expert Academy

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

swexpertacademy.com

 

2. 문제

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

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

 

3. 제약사항

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

 

4. 입력

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

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

 

5. 출력

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

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

 

6. 풀이

- ArrayList를 선언하여 10개의 값을 받은 다음, 오름차순으로 정렬을 한다.

- 오름차순으로 정렬된 ArrayList에서 최솟값과 최댓값을 삭제한다.

- 여기서, 최솟값이 공통일 경우에는 그냥 1개만 지워도 된다.(좀 더 명확했으면 좋겠지만)

- ArrayList의 값들을 다 더하고, 평균을 내는데 반올림 하는 경우에는 Math.round()를 사용하면 된다.

- Math.round()는 double형으로 return을 해주기 때문에 뒤의 갯수에도 double형으로 형변환을 해줘야 한다.

7. 소스 코드

import java.util.*;

public class Solution {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		for(int tc=1;tc<=T;tc++) {
			ArrayList<Integer> List = new ArrayList<>();
			
			for(int i=0;i<10;i++) List.add(sc.nextInt());
			
			Collections.sort(List);
			
			List.remove(0);
			List.remove(8);
			
			int sum = 0;
			double result = 0.0;
			for(int i=0;i<List.size();i++) {
				sum += List.get(i);
			}
			
			result = sum / (double)8;
			
			double aver = Math.round(result);
			System.out.printf("#%d %.0f\n",tc,aver);
		}
	}
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기