#2108 통계학 [백준](H99.33)

2K1·2021년 6월 17일
0

알고리즘

목록 보기
33/40
post-thumbnail

📄문제

수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자.

  • 산술평균 : N개의 수들의 합을 N으로 나눈 값
  • 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값
  • 최빈값 : N개의 수들 중 가장 많이 나타나는 값
  • 범위 : N개의 수들 중 최댓값과 최솟값의 차이
  • N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오.

    예제 입력1

    5
    1
    3
    8
    -2
    2

    예제 출력1

    2
    2
    1
    10

    🖋️코드1

    import sys
    from collections import Counter
    
    n = int(sys.stdin.readline())
    num = []
    for _ in range(n):
        num.append(int(sys.stdin.readline()))
    
    def avg (a):
        total = 0
        for i in a:
            total += i              #sum(a) / len(a) 해도됨
            result = total / len(a)
        return result
    
    def mid (a):
        a.sort()
        result = a[len(a)//2]
        return result
    
    def most (a):
        first = Counter(num).most_common()
        if n == 1:
            return num[0]
    
        if len(num) > 1:
            if first[0][1] == first[1][1]:
                best = (first[1][0])
            else:
                best = (first[0][0])
        return best
    
    def range(a):
        return max(a) - min(a)
    
    print(round(avg(num)))
    print(mid(num))
    print(most(num))
    print(range(num))

    🧷(나만 알아듣는) 추가설명

    round()는 반올림
    최빈값에서 예를들어 counter( {1,3} , {2,3} ) 1과2가 둘다 3번 나왔다고하면

    if first[0][1] == first[1][1]:		# 최빈값을 비교
                best = (first[1][0])	# 그 최빈값을 가지고 있는 두번째 숫자 넣어줘라
    else:
                best = (first[0][0])	# 아니면 첫번째 숫자 넣어줘라
    profile
    📌dev_log

    0개의 댓글

    관련 채용 정보