일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 영어 회화
- baekjoon
- 회화기초
- 알고리즘
- 라이브 아카데미
- 관계절
- 블록체인
- 라이브아카데미
- 전치사
- python
- N-Queens
- BFS
- Backtracking Algorithm
- 파이썬
- 영어
- 정렬
- Hyperledger Fabric
- 영어기초
- 영어회화
- 다이나믹프로그래밍
- used to
- 완전탐색
- IF
- 일상회화
- 백트래킹 알고리즘
- 회화
- 영어회와
- 백준
- 백트래킹
- dfs
Archives
- Today
- Total
내 맴
[ 백준 ] 2108번 : 통계학 (파이썬) 본문
728x90
문제 )
https://www.acmicpc.net/problem/2108
[ 풀이 ]
산술평균, 중앙값, 범위를 구하는 방법은 매우 쉬웠다.
최빈값을 구하기 위해서 Collections모듈의 Counter class를 이용해주었다.
< 구하는 법 >
우선, 입력한 N개의 숫자 list를 정렬해주고 시작
✔ 산술평균 : list의 전체합을 N으로 나눠준 값이다. 소수점 이하 첫째 자리에서 반올림 해야하므로 round함수를 이용해준다.
✔ 중앙값 : list를 정렬했으므로 list의 중간 index에 있는 값을 찾아준다.
✔ 최빈값 : 입력하는 수 N이 1개이면 그냥 출력하지만 여러개인 경우에는 2번째 작은 값을 출력해야한다.
✔ 범위 : 정렬된 list의 맨끝 값(최댓값)에서 맨 앞의 값(최솟값)을 빼준다
- python code
from collections import Counter
import sys
input= sys.stdin.readline
def solve(num):
num.sort()
print(round(sum(num)/N)) # 산술평균
print(num[N//2]) #중앙값
# 최빈값
if N==1:
print(num[0])
else:
lot=Counter(num).most_common(2)
if lot[0][1]==lot[1][1]:
print(lot[1][0])
else:
print(lot[0][0])
print(num[N-1]-num[0])
N=int(input())
num=[]
for i in range(N):
num.append(int(sys.stdin.readline()))
solve(num)
728x90
'Algorithm > Baekjoon 문제풀이' 카테고리의 다른 글
[ 백준 ] 1003번 : 피보나치 함수 (파이썬) (0) | 2020.05.22 |
---|---|
[ 백준 ] 2748번 : 피보나치 수 2 (파이썬) (0) | 2020.05.19 |
[ 백준 ] 14889번 : 스타트와 링크 (파이썬) (0) | 2020.05.16 |
[ 백준 ] 14888번 : 연산자 끼워넣기 (파이썬) (0) | 2020.05.14 |
[ 백준 ] 15652번 : N과 M (4) (파이썬) (0) | 2020.05.13 |