白準-2108(Python)-統計学
白駿2108
算術平均値と最貧値に注意すれば,苦労せずに解くことができる.
平均値はround関数で簡単に求めることができます.
最も頻繁な値は出現回数によって求められるため,Counterというクラスを用いて各数字が何回出現したかを知る.
(カウンタはソートされていないので、most commonでソートされたリストを返します.)
most commonで返された結果は(数,回数)形式であるため,1番目と2番目が同じ回数であれば2番目の値が出力され,そうでなければ1番目の値が最も多く現れるため出力される.
ここで使用するカウンタもsetで同じ効果を生み出すことができますが、タイムアウトします.
(ほとんどの場合、ライブラリはより高速と考えられます.)
Pythonでround関数を用いて0.5を四捨五入すると,整数部分偶数は半捨五入,奇数は四捨五入となる.これはPythonが使用するround内蔵関数がround half up方式ではなくround half偶数方式であるためである.
ex)つまり3.5の場合,四捨五入が4,4.5の場合,半捨五入が4となる.
この問題を解決するために、丸め誤差のない固定小数点を使用する場合は、10進モジュールのDecimalを使用します.Decimalは10進数で正確な小数位数を表します.
clear():カウンタオブジェクトからすべてのkey-valueペアを削除
copy():カウンタオブジェクトのコピーを返します.
Elements():カウンタ数値で要素を返します.リストを使用してカウンタオブジェクトを作成した場合は、リストに変換するのが簡単です.順番が変わった. get():keyをパラメータとして入力し、そのkeyに一致する値を返します.
items():key,value対はtupleに戻る
keys():カウンタオブジェクトを返すkey
most common():最も頻繁なkeyは、valueペアからtupleに戻ります.数値(個数)をパラメータに渡すと、最も周波数の高いペアから等しいペアのみが返されます.
pop(), popitem() pop():パラメータを使用して鍵を渡し、鍵に一致する値を返し、カウンタオブジェクトから鍵と値のペア を削除する必要があります. popitem():渡されていないパラメータは、一番後ろのキーと値のペアをtuple形式として返し、カウンタオブジェクトから を削除します.
setdefault():カウンタオブジェクトにキーと値ペアを追加する個の鍵を送信するだけで、DIPORTRONONE とカウントされます.キーを持つdefault=10が渡されると、入力数字はそのキーに対応するカウントに と反映される.
subtract():iterableを渡すと、各要素の値がそれぞれ減算され、結果のカウントが負になる可能性があります.
update():iterableを転送して同じ値がある場合にカウントを追加し、ない場合は新しいキーと値ペアを作成します.
values():カウンタオブジェクトのvalues(カウント)を返します.
統計学
算術平均値と最貧値に注意すれば,苦労せずに解くことができる.
平均値はround関数で簡単に求めることができます.
最も頻繁な値は出現回数によって求められるため,Counterというクラスを用いて各数字が何回出現したかを知る.
(カウンタはソートされていないので、most commonでソートされたリストを返します.)
most commonで返された結果は(数,回数)形式であるため,1番目と2番目が同じ回数であれば2番目の値が出力され,そうでなければ1番目の値が最も多く現れるため出力される.
ここで使用するカウンタもsetで同じ効果を生み出すことができますが、タイムアウトします.
(ほとんどの場合、ライブラリはより高速と考えられます.)
コード#コード#
import sys
input = sys.stdin.readline
N=int(input())
arr = []
for _ in range(N):
arr.append(int(input()))
#1 산술 평균 (소수점 첫 번째 자리에서 반올림)
print(round(sum(arr)/N))
#2 중앙값
arr.sort()
print(arr[N//2])
#3 최빈값
from collections import Counter
k=Counter(arr).most_common()
if len(arr) > 1: #만약 입력값이 하나면 , 그게 최빈값이 되므로 예외처리
if k[0][1] == k[1][1]:
print(k[1][0])
# 최빈값의 빈도수를 비교하여, 2개이상의 최빈값이 있으면 두번째로 작은것을 출력
else:
print(k[0][0])
else:
print(arr[0])
#4 범위
print(arr[-1] - arr[0])
四捨五入を実現する方法
Pythonでround関数を用いて0.5を四捨五入すると,整数部分偶数は半捨五入,奇数は四捨五入となる.これはPythonが使用するround内蔵関数がround half up方式ではなくround half偶数方式であるためである.
ex)つまり3.5の場合,四捨五入が4,4.5の場合,半捨五入が4となる.
この問題を解決するために、丸め誤差のない固定小数点を使用する場合は、10進モジュールのDecimalを使用します.Decimalは10進数で正確な小数位数を表します.
import decimal
decimal.Context = decimal.getcontext()
decimal.Context.rounding = decimal.ROUND_HALF_UP
このようにdecimalモジュールを読み込み、round関数の優先パラメータを変更します.round(decimal.Decimal(4.5), 0)
このように四捨五入式の四捨五入を体現することができる.CollectionsモジュールのCounterクラス
clear():カウンタオブジェクトからすべてのkey-valueペアを削除
copy():カウンタオブジェクトのコピーを返します.
Elements():カウンタ数値で要素を返します.
items():key,value対はtupleに戻る
keys():カウンタオブジェクトを返すkey
most common():最も頻繁なkeyは、valueペアからtupleに戻ります.数値(個数)をパラメータに渡すと、最も周波数の高いペアから等しいペアのみが返されます.
pop(), popitem()
setdefault():カウンタオブジェクトにキーと値ペアを追加する
subtract():iterableを渡すと、各要素の値がそれぞれ減算され、結果のカウントが負になる可能性があります.
update():iterableを転送して同じ値がある場合にカウントを追加し、ない場合は新しいキーと値ペアを作成します.
values():カウンタオブジェクトのvalues(カウント)を返します.
Reference
この問題について(白準-2108(Python)-統計学), 我々は、より多くの情報をここで見つけました https://velog.io/@junyp1/백준-2108-Python-통계학テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol