[BOJ] 통계학

Minsu Han·2022년 11월 2일
0

알고리즘연습

목록 보기
49/105

코드

import sys
input = sys.stdin.readline

def findFreq(freq):
    frl = []
    fr = 0
    for i in range(8001):
        if freq[i] == fr:
            frl.append(i-4000)
        elif freq[i] > fr:
            frl.clear()
            frl.append(i-4000)
            fr = freq[i]

    frl.sort()
    if len(frl) == 1:
        return frl[0]
    elif len(frl) > 1:
        return frl[1]
        

n = int(input())
freq = [0]*8001
arr = []

for _ in range(n):
    num = int(input())
    arr.append(num)
    freq[num+4000] += 1

arr.sort()

print(round(sum(arr) / n))
print(arr[n//2])
print(findFreq(freq))
print(arr[-1] - arr[0])

결과

image


풀이 방법

  • 간단한 통계문제이다. 신경써야 하는 부분은 최빈값을 구하는 부분이다. 이중 반복문을 사용하지만 않으면 될 것이다.
  • 수의 절댓값이 최대 4000이므로 8001개의 인덱스를 갖는 배열을 사용하여 배열[수] = 빈도 형태로 빈도를 저장하였다.

profile
기록하기

0개의 댓글