반응형
[문제 출처]
https://www.acmicpc.net/problem/2108
[문제 풀이]
주어진 n개의 숫자에 대해서
산술평균, 중앙값, 최빈값, 범위를 구하는 문제이다.
산술평균의 경우 문제에서 소수점 이하 첫째 자리에서 반올림한 값을 출력한다고 제시되어있으므로 round()를 사용하였다.
중앙값과 범위는 n개의 숫자들이 저장된 리스트를 오름차순으로 정렬하면 쉽게 구할 수 있다.
최빈값을 구하는 것은 collections모듈의 Counter 클래스를 사용하면 쉽지만 직접 구해보았다.
딕셔너리를 이용해서 해당 숫자를 key로 그 숫자의 빈도수를 value로 하여 저장하였고,
최빈값을 구하기 위해서 value 기준 오름차순으로 정렬해주었다.
여기에서 주의할 점은 정렬한 결과는 딕셔너리가 아니라 리스트로 타입이 바뀌기 때문에
key, value로 접근하지 못하고 0번째 key와 value에 접근하기 위해서는 count[0][0], count[0][1]를 사용해야 한다.
#2108
import sys
input = sys.stdin.readline
n = int(input())
numbers = []
for i in range(n):
numbers.append(int(input()))
numbers.sort()
count = {}
for i in range(n):
if numbers[i] in count.keys():
count[numbers[i]] += 1
else:
count[numbers[i]] = 1
count = sorted(count.items(), key = lambda x:x[1], reverse=True)
print(round(sum(numbers)/n))
print(numbers[len(numbers)//2])
if len(count)==1 or count[0][1]!=count[1][1]:
print(count[0][0])
else:
print(count[1][0])
print(numbers[-1] - numbers[0])
반응형
'알고리즘 > python' 카테고리의 다른 글
[python/파이썬] 백준 3052 나머지 (0) | 2022.11.04 |
---|---|
[python/파이썬] 백준 2566 최댓값 (0) | 2022.11.03 |
[python/파이썬] 백준 2738 행렬 덧셈 (1) | 2022.10.28 |
[python/파이썬] 백준 4673 셀프 넘버 (0) | 2022.10.26 |
[python.v파이썬] 백준 1932 정수 삼각형 (1) | 2022.10.14 |