ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] 백준 2108 통계학
    Python_알고리즘 2021. 7. 31. 00:41
    문제 바로가기

       문제분석   

    # 산술평균 : N개의 수들의 합을 N으로 나눈 값

    # 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값

    # 최빈값 : N개의 수들 중 가장 많이 나타나는 값

    # 범위 : N개의 수들 중 최댓값과 최솟값의 차이

     

     

       문제풀이   

    import sys
    
    input = sys.stdin.readline
    n = int(input())
    
    num = []    # [1, 3, 8, -2, 2]
    for _ in range(n):
        num.append(int(input()))
    
    # 산술평균
    print(round(sum(num) // n))
    
    # 중앙값
    num.sort()
    print(num[n//2])
    
    # 최빈값
    from collections import Counter
    mc = Counter(num).most_common()
    
    if len(num) > 1:
        if mc[0][1] == mc[1][1]:
            print(mc[1][0])
        else:
            print(mc[0][0])
    else: 
        print(num[0])
    
    
    # 범위
    print(num[-1] - num[0])

    # 파이썬에서 round 함수로 0.5를 반올림할 때, 정수 부분이 짝수면 반내림이 되고, 홀수면 반올림이 된다.
    # 그 이유는 파이썬에서 사용하고 있는 round 내장 함수는 round_half_up 방식이 아니라 round_half_even 방식을 채택하고 있기 때문.
    # ex)즉 3.5의 경우에는 반올림이 되서 4가 되고, 4.5의 경우에는 반내림이 되어서 4가 되는 것.
    # 이를 해결하기 위해, 반올림 오차가 없는 고정소수점을 사용하려면 decimal 모듈의 Decimal을 사용하면 된다. Decimal은 숫자를 10진수로 처리하여
    # 정확한 소수점 자릿수를 표현해준다.

     

    # 최빈값 구하기위한 클래스 임포트
    # dict의 하위 클래스로 리스트나 튜플에서 각 데이터가 등장한 횟수를 사전형식으로 돌려줌
    # 빈도수가 높은 순으로 반환함.

     

    # 최빈값의 빈도수를 비교하여, 2개이상의 최빈값이 있으면 두번째로 작은것을 출력

    # 만약 입력값이 하나면 그게 최빈값이 되므로 예외처리 됨

     

     

     

    'Python_알고리즘' 카테고리의 다른 글

    [Python] 백준 9663 N-Queen  (0) 2021.08.04
    [Python] 백준 15650 N과 M (2)  (0) 2021.08.03
    [Python] 백준 1260 DFS와 BFS  (0) 2021.07.30
    [Python] 백준 1874 스택 수열  (0) 2021.07.27
    [Python] 백준 4949 균형잡힌 세상  (0) 2021.07.24

    댓글

Designed by Tistory.