문제
풀이
- 구현
- 최빈값의 경우 딕셔너리를 이용해 각 숫자를 key값에, 해당 숫자의 빈도수를 value값에 담았다
value값이 가장 큰 값의 key들을 배열에 담아 풀었다.
- 시간초과는 sys.stdin.readline()을 통해 해결했다
코드
import sys
n = int(input())
arr = []
diction = {}
for _ in range(n):
i = int(sys.stdin.readline())
arr.append(i)
if i in diction: # 최빈값 계산을 위해 딕셔너리에 담기
diction[i] += 1
else:
diction[i] = 1
# 산술평균
print(round(sum(arr)/n))
# 중앙값
arr.sort()
i = int(len(arr)//2)
print(arr[i])
# 최빈값
maxNum = 0
arr2 = []
for key, val in diction.items():
if val > maxNum:
arr2.clear()
arr2.append(key)
maxNum = val
elif val == maxNum:
arr2.append(key)
maxNum = val
arr2.sort() # 최빈값이 여러 개 있을 경우, 최빈값 중 두 번째로 작은 값 출력을 위해 정렬
print(arr2[0]) if len(arr2) == 1 else print(arr2[1])
# 범위
print(arr[len(arr)-1] - arr[0])
'코딩테스트 > BOJ' 카테고리의 다른 글
[백준/파이썬] 10829번: 이진수 변환 (Python) (0) | 2021.04.25 |
---|---|
[백준/파이썬] 17478번: 재귀함수가 뭔가요? (Python) (0) | 2021.04.25 |
[백준/파이썬] 2960번: 에라토스테네스의 체 (Python) (0) | 2021.04.23 |
[백준/파이썬] 10773번: 제로 (0) | 2021.04.20 |