728x90
SMALL
예외조건
![](https://blog.kakaocdn.net/dn/czxsH2/btsF2DQEzKk/Gak4oJ8GvWedkdys3qRGq1/img.png)
n개의 숫자를 입력받아 총 4가지의 결과를 출력하면 되는 문제이다.
첫번째 줄은 산술 평균값을 구하는 문제로 n개의 값의 평균을 구하는데 첫번째 자리는 반올림하여 출력을 하기에 리스트의 총합을 n만큼 나눴다.
예외조건으로 평균값이 -1 에서 0사의의 값이면 반올림하여 -0이 아닌 0으로 만들었다.
두번째 줄은 중앙값 출력으로 이 문제의 경우 전부 홀수로 이루어져있기에 리스트를 정렬하고 리스트 길의의 // 2한값의 리스트 값을 찾아주었다.
세번째 최빈값 출력으로 빈도수가 제일 많이 나온 숫자를 출력한다. (빈도수가 같을경우 두번째로 작은 숫자 출력)
이 같은 경우 파이썬 딕셔러리를 사용하여 리스트에 존재하는 숫자를 키로 사용하여 숫자가 딕셔러리에 미존재하면 추가 존재하면 value값을 1씩
추가하여 중복없이 빈도수를 구하였다. 그중 최대 빈도수를 가진 값으로 (빈도수가 같을경우 두번째로 작은 숫자 출력) 경우 temp 리스트에 값을
추가하여 정렬후 2번째 값을 출력하였다.
네번째 범위 출력으로 정렬된 리스트의 첫번째 값과 마지막값을 마이너스를 해줌으로 범위를 구하였다.
# 통계학
import sys
n = int(sys.stdin.readline())
result = []
for i in range(n):
result.append(int(sys.stdin.readline()))
# 산술평균 출력
sumNumber = sum(result) / n
# -0.3333 -> 0
if -1 < sumNumber < 0:
sumNumber = 0
sys.stdout.write(str(round(sumNumber)) +'\n')
# 중앙값 출력
result.sort()
sys.stdout.write(str(result[len(result)//2]) +'\n')
# 최빈값출력
maxCnt = {}
temp = []
for i in result:
if i in maxCnt:
maxCnt[i] += 1
else:
maxCnt[i] = 1
maxNum = 0
cnt = 0
for i, j in maxCnt.items():
if j > maxNum:
maxNum = j
for i, j in maxCnt.items():
if j == maxNum:
cnt += 1
temp.append(i)
temp.sort()
binNumber = temp[0]
if cnt > 1:
binNumber = temp[1]
sys.stdout.write(str(binNumber) +'\n')
# 범위출력
sys.stdout.write(str(result[n-1] - result[0]) +'\n')
728x90
LIST
'파이썬 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 과일 장수 - Python(파이썬) (0) | 2024.03.23 |
---|---|
[백준] 베스트셀러 - Python(파이썬) (0) | 2024.03.23 |
[백준] 덩치 - Python(파이썬) (0) | 2024.03.23 |
[백준] 분해합 - Python(파이썬) (0) | 2024.03.23 |
[백준] 한수 구하기 - Python(파이썬) (0) | 2024.03.23 |