[백준][Python] 2108번: 통계학

2024. 11. 23. 23:14·공부하기/문제 풀기

https://www.acmicpc.net/problem/2108

 

상당히 간단한 문제이기에

 

파이썬의 기능을 최대한 이용해보려고 했다.

 

산술평균의 경우 파이썬의 sum 함수를 사용해 모든 값들을 더해서 N으로 나눠준 뒤

round 함수를 사용해 반올림해주었다.

 

중앙값의 경우 간단히 입력 값들을 sort 함수로 정렬해주고 N의 절반 인덱스의 값을 출력하게 해주었다.

 

최빈값은 collections의 Counter를 사용해주었다.

Counter 객체는 인자로 들어온 요소를 개수가 몇개인지 세주는 기능을 가지고 있다.

 

예를 들어 Counter([1, 1, 1, 2, 2, 3]) 을 해주면

Counter((1, 3), (2, 2), (3, 1))

로 개수를 세어서 저장한다.

 

이때 Counter의 most_common 함수를 사용하면

이 개수를 센 결과값을 개수에 따라 내림차순으로 정렬해서 반환한다.

 

이때 most_common의 함수의 인자로 n을 넣어주면

n개까지만 빼내어서 보내준다.

 

 

범위의 경우 파이썬의 리스트는 인덱스를 음수로 넣어 역순으로 순회할 수 있는 기능을 가지고 있다.

[-1]이 마지막 원소이므로 [-1] - [0] 을 해서 범위를 구해주었다.

 

마지막으로 출력해주면 완료이나

이때 최빈값이 여러개라면 그 중 두번째로 작은 값을 출력해야 한다.

 

counter는 most_common을 했을 때 같은 개수를 가진게 여러개라면 오름차순으로 정렬해서 내보낸다.

 

따라서 most_common(2)를 통해 2개를 빼내고

만약 빼낸게 2개이고 2번째거와 첫번째꺼의 개수가 같으면 이 값으로 출력하게 해주었다.

 

코드보기

더보기
from sys import stdin
from collections import Counter

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

for i in range(N):
    num[i] = int(stdin.readline())

num.sort()
avg = sum(num) / N
mid = num[N // 2]
cnt = Counter(num).most_common(2)
rng = num[-1] - num[0]

print(round(avg))
print(mid)
if len(cnt) > 1 and cnt[0][1] == cnt[1][1]:
    print(cnt[1][0])
else:
    print(cnt[0][0])
print(rng)

'공부하기 > 문제 풀기' 카테고리의 다른 글

[백준][Python] 1927번: 최소 힙 (최소 힙의 개념과 직접 구현하기)  (1) 2024.11.24
[백준][Python] 1755번: 숫자놀이  (0) 2024.11.22
[백준][Python] 2502번: 떡 먹는 호랑이  (0) 2024.11.20
[백준][Python] 2012번: 등수 매기기  (0) 2024.11.18
[백준][C] 2003번: 수들의 합 2  (0) 2024.11.17
'공부하기/문제 풀기' 카테고리의 다른 글
  • [백준][Python] 1927번: 최소 힙 (최소 힙의 개념과 직접 구현하기)
  • [백준][Python] 1755번: 숫자놀이
  • [백준][Python] 2502번: 떡 먹는 호랑이
  • [백준][Python] 2012번: 등수 매기기
Potan7
Potan7
그냥 내 맘대로 올리는 곳 프사 : 카미쵸(kyamicho) (먼지먼지(jominji1374) 수정)
  • Potan7
    Potan의 개발 블로그
    Potan7
  • 전체
    오늘
    어제
    • 분류 전체보기 (28)
      • 공부하기 (24)
        • 문제 풀기 (15)
        • 마인크래프트 모드 만들기 (8)
        • 유니티 (1)
      • 프로젝트 (4)
        • 마인크래프트 디스플레이 애니메이션 툴 (4)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    2238번
    완전 이진 트리
    트리
    분수 합
    알고리즘
    오블완
    dfs
    유니티
    DynamicProgramming
    1735
    모드 개발
    DP
    백준 경매
    힙
    백준 분수 합
    팩토리얼
    네오포지
    누적합
    이진 트리
    티스토리챌린지
    문제풀이
    나머지
    파이썬
    백준 1735
    백준
    백분
    거듭제곱
    c
    마인크래프트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Potan7
[백준][Python] 2108번: 통계학
상단으로

티스토리툴바