BoJ 6177 - Statistics [with Python / 문제 한국어로 번역]

ssook·2023년 9월 5일
0

BoJ 문제기록

목록 보기
9/29

📍문제

문제

소들이 초등 통계학과에 입학했습니다.
그리고 그 소들은 지금 통계학 과제를 하면서 어려움을 겪고 있습니다! 여러분들이 도와주세요.

NN(1 <= N <= 500)개의 숫자 집합 XiX_i (-5,000 <= XiX_i <= 5,000)이 주어졌을 때, 두 가지 통계치를 계산 해주세요.

  1. 평균 (숫자들의 합을 NN으로 나눈 값)
  2. 중간값 (NN이 홀수일 경우, NN개의 숫자를 정렬했을 때 중간에 위치한 숫자.
    만약 NN이 짝수일 경우에는, NN개의 숫자를 정렬했을 때 중간 두 숫자의 평균값을 의미.)

두 통계치 모두 공식 답변과의 차이가 0.002 이내라면 답으로 인정합니다.

입력

총 두 개의 줄에 걸쳐 입력을 받습니다.

  • 첫 번째 줄: 정수 하나, NN
  • 두 번째 줄부터 N+1N+1번째 줄까지: 각 줄에 정수 하나 XiX_i

출력

총 두 개의 줄에 걸쳐 출력을 합니다.

  • 첫 번째 줄: 입력 집합의 평균
  • 두 번째 줄: 입력 집합의 중간값

📍 아이디어

간단한 sorting + 통계 문제.
한국어 문제였다면 실버5가 아니라 브론즈1이지 않았을까...

오름차 순으로 정렬해준 후, 중앙값과 평균을 문제에서 제시해주는 대로 계산 후 포맷(6자릿수)에 맞게 출력해주면 된다.


📍 제출코드


import sys

n = int(sys.stdin.readline().rstrip())
num = []

for i in range(n):
  num.append(int(sys.stdin.readline().rstrip()))

num.sort()

print("{:.6f}".format(sum(num) / n))

if n % 2 == 0:
  if n > 2 :
    mid = n // 2
    print("{:.6f}".format((num[mid-1]+num[mid])/2))
  else:
    mid = n // 2
    print("{:.6f}".format((num[0]+num[1])/2))

else:
  mid = (n // 2)
  print("{:.6f}".format(num[mid]))
  
  
profile
개발자에서, IT Business 담당자로. BrSE 업무를 수행하고 있습니다.

0개의 댓글