[2108번] 통계학

HYEOB KIM·2022년 5월 22일
0

algorithm

목록 보기
10/44
post-custom-banner

백준 2108번 통계학

코드 풀이

  • 최빈값 : 중복일 경우를 고려해 max_idx라는 리스트 변수를 만들고, 최빈(max_count)을 나타내는 인덱스를 max_idx에 추가합니다. 만약 값이 중복이라면 max_idx에는 2개 이상의 값이 추가되어 있을 것입니다. 이를 오름차순 정렬하고, 두 번째 값(인덱스: 1)을 출력합니다.
import sys

n = int(sys.stdin.readline())
count = [0] * (8001)   # 절대값의 볌위가 -4000 ~ +4000 이므로 8000개를 준 뒤 인덱스 값에서 -4000을 한 값이 입력 변수의 숫자입니다.

num = [int(sys.stdin.readline()) for _ in range(n)]

for i in num:
    count[i+4000] += 1

# 산술 평균
print(int(round(sum(num) / n, 0)))   

# 중간값
num.sort()
print(num[int(n/2)])   

# 최빈값(중복일 경우 두 번째로 작은 값)
max_count = max(count)
max_idx = []
for i in range(len(count)):
    if count[i] == max_count:
        max_idx.append(i)

max_idx.sort()
if len(max_idx) == 1:
    print(max_idx[0] - 4000)
else:
    print(max_idx[1] - 4000)   

# 범위(최대값 - 최소값)
print(max(num) - min(num))   
profile
Devops Engineer
post-custom-banner

0개의 댓글