티스토리 뷰

<문제 링크>

 

2108번: 통계학

첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.

www.acmicpc.net

 

<문제 풀이>

import sys

N = int(sys.stdin.readline())
num = []
count = [0] * 8001

for i in range(N):
    n = int(sys.stdin.readline())
    num.append(n)
    count[n+4000] += 1
    
print(round(sum(num)/N))

print(sorted(num)[N//2])

mode = list(filter(lambda x: count[x] == max(count), range(len(count))))
if len(mode) == 1:
    print(mode[0]-4000)
else:
    print(mode[1]-4000)

print(max(num)-min(num))

2108 입출력 예시

*key point: 산술평균, 중앙값, 범위는 어렵지 않게 해결할 수 있지만 최빈값의 경우 비교적 어렵다. 최빈값을 계산하기 위하여 count라는 리스트를 활용하였고 이 때 음수를 고려하기 위해 가능한 가장 작은 n값인 4000을 더해주었다. filter 함수를 활용하여 최빈값이 여러 개인 경우도 고려하여 index를 찾아 list로 얻었으며, 출력시 더해주었던 4000을 빼주었다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함