문제
수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자.
- 산술평균 : N개의 수들의 합을 N으로 나눈 값
- 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값
- 최빈값 : N개의 수들 중 가장 많이 나타나는 값
- 범위 : N개의 수들 중 최댓값과 최솟값의 차이
N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오.
정답풀이
#통계학
from collections import Counter
import sys
value_list = []
N = int(input())
for _ in range(N):
#input으로 하면 시간초과
value_list.append(int(sys.stdin.readline()))
value_list.sort()
print((round(sum(value_list)/N)))
print(value_list[len(value_list)//2])
mode_dict = Counter(value_list)
modes = mode_dict.most_common()
if len(value_list) > 1:
if(modes[0][1]== modes[1][1]):
print(modes[1][0])
else:
print(modes[0][0])
else:
print(modes[0][0])
print(max(value_list)-min(value_list))
시간초과 풀이
#통계학
from collections import Counter
import sys
value_list = []
N = int(input())
for _ in range(N):
value_list.append(int(input()))
value_list.sort()
print((round(sum(value_list)/N)))
print(value_list[len(value_list)//2])
mode_dict = Counter(value_list)
modes = mode_dict.most_common()
if len(modes) > 1:
if(modes[0][1]== modes[1][1]):
print(modes[1][0])
else:
print(modes[0][0])
else:
print(modes[0][0])
print(max(value_list)-min(value_list))
배운점
1. / != //
- /는 나눗셈을 의미하며 결과가 float로 나타납니다.
- //는 나눗셈을 의미하며 결과가 int로 나타납니다.
2. input() vs sys.stdin.readline()
input()은 사용자의 입력 받고 -> 문자열 변환 -> 개행 제거(rstrip() 함수를 적용)의 과정을 거친다
sys.stdin.readline() prompt 인수로 받지 않고, 개행 문자 포함한 값을 리턴한다
여러 줄 입력받을 때 sys.stdin.readline()이 더 빠름.
3.백준 런타임오류 에러
- 가끔 똑같은 코드인데 런타임 오류 에러가 뜰 떄가 있음 . 한번은 더 해보기
'CS > 알고리즘' 카테고리의 다른 글
백트래킹 알고리즘 정리(feat. 백준 15649번 파이썬 풀이) (0) | 2022.03.06 |
---|---|
백준 11651번 좌표 정렬하기 2 파이썬 풀이 (0) | 2022.03.03 |
백준 10989번 수 정렬 3 파이썬 풀이(메모리 관리) (0) | 2022.02.28 |
백준 2750번 수 정렬하기 파이썬 풀이(삽입정렬 , 버블정렬) (0) | 2022.02.25 |
백준 1436번 영화감독 숌 파이썬 풀이 (0) | 2022.02.24 |