Algorithm
SWEA 1984번: 중간 평균값 구하기 (D2) - Python 풀이
서서리
2025. 5. 24. 11:58
SMALL
문제 설명
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
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
출력
#1 18
#2 20
#3 24
풀이 과정
싸피 코테 날에 아침에 머리 깨울 겸 풀어본 문제 2. 일부러 쉬운 문제들만 풀었던 거 맞고요. 이것도 그대로 구현하면 되는 문제입니다.
최대 수와 최소 수를 제거하기 위해 정렬하고, 맨 앞의 값과 맨 뒤의 값을 저장해서 배열 탐색 시 이를 제외시키고 나머지 숫자들만 누적해서 평균을 구했습니다.
정답 코드
T = int(input())
for ts in range(1, T+1):
numbers = list(map(int, input().split()))
# 정렬
numbers.sort()
# 최소 수와 최대 수 저장
min_value = numbers[0]
max_value = numbers[-1]
# 평균 구하기 위한 변수들 초기화
sum_value = 0
num = 0
# 10개의 수 탐색
for i in range(10):
# 최소 수와 최대 수는 제거
if numbers[i] != min_value and numbers[i] != max_value:
# 합과 개수 누적
sum_value += numbers[i]
num += 1
# 평균 출력
print(f"#{ts} {round(sum_value / num)}")
이상입니다.
LIST