문제
10개의 수를 입력 받아, 최대 수와 최소 수를 제외한 나머지의 평균값을 출력하는 프로그램을 작성하라.
(소수점 첫째 자리에서 반올림한 정수를 출력한다.)
[제약 사항]
각 수는 0 이상 10000 이하의 정수이다.
[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 10개의 수가 주어진다.
[출력]
출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
문제풀이
1. 입력받은 한줄의 값을 리스트에 담아 오름차순 정렬한다
2. 오름차순 정렬을 하면 양 끝값이 최대값과 최소값이므로 이를 제외할 수 있게 slice 한다
3. slice 결과의 합을 이용해서 평균을 구한다
작성코드
import sys
sys.stdin = open("input.txt", "r")
T = int(input())
for test_case in range(1, T + 1):
li = list(map(int, input().split()))
li.sort()
end = len(li)
li = li[1:end-1]
avg = sum(li) / len(li)
print(f'#{test_case} {round(avg)}')
하단은 해당 문제를 풀기위해 알아야하는 개념이라서 정리한 것이 아니라,
익숙치 않은 파이썬으로 작성하다보니 개인적으로 생긴 궁금증을 정리한 것이다.
알게된 점 1: 파이썬의 언더스코어(_
)
파이썬의 네이밍 규칙이 궁금해져서 언더스코어 쓰임새를 검색해봤다.
파이썬에서 언더스코어(_)는 다음과 같은 상황에서 사용되는데 크게 5가지의 경우가 있다고 한다.
- 인터프리터(Interpreter)에서 마지막 값을 저장할 때
- 값을 무시하고 싶을 때 (흔히 “I don’t care"라고 부른다.)
- 변수나 함수명에 특별한 의미 또는 기능을 부여하고자 할 때
- 국제화(Internationalization, i18n)/지역화(Localization, l10n) 함수로써 사용할 때
- 숫자 리터럴값의 자릿수 구분을 위한 구분자로써 사용할 때
알게된 점 2: 파이썬 자료형 별 주요 연산자의 시간 복잡도
길어지므로 잘 정리된 블로그 링크를 남기겠다.
'Problem Solving' 카테고리의 다른 글
[JS 알고리즘] Toy 7 - treeDFS (0) | 2022.05.20 |
---|---|
[SWEA] D2 - 1859. 백만 장자 프로젝트 in 파이썬 (0) | 2022.05.19 |
[SWEA] D2 - 1986. 지그재그 숫자 in 파이썬 (0) | 2022.05.19 |
[SWEA] D2 - 1970. 쉬운 거스름돈 in 파이썬 (0) | 2022.05.18 |
[SWEA] D2 - 1989. 초심자의 회문 검사 in 파이썬 (0) | 2022.05.18 |