[백준] 2108번 통계학 (Python)

2021. 3. 15. 19:04·알고리즘/백준
728x90
반응형

문제

 

www.acmicpc.net/problem/2108

 

2108번: 통계학

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

www.acmicpc.net

 

코드

import sys
from collections import Counter
N = int(sys.stdin.readline())

k = []

for i in range(N):
    k.append(int(sys.stdin.readline()))
    
k.sort()
#산술평균
print(int(round(sum(k)/N,0)))

#중앙값
print(k[N//2])

#최빈값
f = Counter(k) # 딕셔너리 형태로 출력 Counter({-2: 1, 1: 1, 2: 1, 3: 1, 8: 1})

b = f.most_common() # 빈도수가 높은순으로 투플형태로 출력 [(-2, 1), (1, 1), (2, 1), (3, 1), (8, 1)]

if len(k) >1: #만약 입력값이 하나면, 그게 최빈값이므로 예외처리
    if b[0][1] == b[1][1]:
        print(b[1][0]) # 최빈값의 빈도수를 비교하여, 2개이상의 최빈값이 있으면 두번쨰로 작은것을 출력
    else:
        print(b[0][0])
else:
    print(k[0])

#범위
print(k[-1] - k[0])

 

코드설명

입력된 값들에 대하여 산술평균, 중앙값, 최빈값, 범위를 구하는 문제이다.

 

산술평균은 sum()을 이용해 리스트 값들을 전부 더한 다음 N으로 나눠주고 round 함수를 사용해 반올림을 해주면 된다.

 

중앙값은 N을 2로 나눈 몫으로 인덱스를 사용해 나타내고

 

최빈값은 라이브러리 Counter를 사용해 딕셔너리 형태로 만들어주고 most_common() 함수를 사용해 빈도수가 높은 순으로 투플 형태로 만들어준다. 문제에 최빈값이 여러개라면 두번째로 작은 값을 출력하라고 나와있어서 로직을 따로 만들어 줘야한다.

 

범위는 N개의 수 들중 최댓값과 최솟값의 차이이기 때문에 k[-1] 에서 k[0]을 빼주면 된다.

 

반응형
저작자표시 (새창열림)

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 2231번 분해합 (Python)  (0) 2021.03.15
[백준] 2798번 블랙잭 (Python)  (1) 2021.03.15
[백준] 1260번 DFS와 BFS (Python)  (0) 2021.03.14
[백준] 4949번 균형잡힌 세상 (Python)  (0) 2021.03.14
[백준] 18258번 큐 2 (Python)  (0) 2021.03.13
'알고리즘/백준' 카테고리의 다른 글
  • [백준] 2231번 분해합 (Python)
  • [백준] 2798번 블랙잭 (Python)
  • [백준] 1260번 DFS와 BFS (Python)
  • [백준] 4949번 균형잡힌 세상 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196)
      • study (1)
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1)
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (19)
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SFlash
    파이썬
    orm
    백준
    김영한
    스파르타코딩클럽
    항해마켓
    회고
    java
    해결
    알고리즘
    SpringBoot
    괄호
    프로그래머스
    실전프로젝트
    코딩테스트
    버그
    미니프로젝트
    그리디
    에러
    카카오코딩테스트
    정리
    카카오인턴
    spring
    브루트포스
    항해99
    인프런
    jpa
    후기
    조합
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[백준] 2108번 통계학 (Python)
상단으로

티스토리툴바