문제풀이
- 입력받은 숫자들을 리스트에 저장하고 크기 순서대로 정렬을 해주었다. (중앙값을 구하기 위해)
- 산술 평균: sum을 len으로 나누고 반올림했다.
- 중앙값: len의 나누기2의 위치에 있는 값을 출력한다.
- 최빈값: Counter사용
- Counter(num_list).most_common() 메소드는 num_list에서 가장 많이 들어있는 순서대로 dict형태로 출력한다.
- 예를 들어 num_list가 [1,1,1,2,2,3]이면
- { 1:3 , 2:2, 3:1} 이렇게 출력한다.
- 여기서는 가장 많이 들어있는 것이 두개넘는지만 보면 되기때문에 2개까지 확인한다.
- 첫번째 나온 빈도와 두번째 나온 빈도가 같으면 최빈값 중에서 두번째로 작은 값( mode[1][0])을 출력한다
- 범위 : 마지막 숫자와 맨 앞 숫자를 뺀 값이다.
코드
import sys
from collections import Counter
num= int(sys.stdin.readline()) #원소의 개수
num_list = []
for i in range(num):
num_list.append(int(sys.stdin.readline().rstrip()))
num_list.sort()
#산술 평균
print(round(sum(num_list)/len(num_list))) #반올림
#중앙값
print(num_list[len(num_list)//2])
#최빈값
#Counter은 dict형태로 리스트에서 원소가 몇 개 나왔는지 출력한다
#most_common()메소드는 등장한 횟수를 내림차순으로 정리한다
#most_common(2)는 가장 많이 나온 수 2개만 보여준다.
mode = Counter(num_list).most_common(2)
#print(f'mode는 {mode}')
#print(f'mode length는 {len(mode)}')
print(mode[1][0] if len(mode)>1 and mode[0][1]==mode[1][1] else mode[0][0])
#범위
print(num_list[-1]-num_list[0])
728x90
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[백준] 15650 N과 M(2) 파이썬 풀이 (백트래킹) (0) | 2021.06.24 |
---|---|
[백준] 2630 색종이 만들기 파이썬 (분할정복) (0) | 2021.06.23 |
[백준] 1149 RGB거리 파이썬 풀이(동적 계획법) (0) | 2021.06.23 |
[백준] 9461 파도반 수열 파이썬 풀이 (동적 계획법) (0) | 2021.06.23 |
[백준] 9184 신나는 함수 실행 파이썬 풀이 (동적계획법) (0) | 2021.06.23 |