본문 바로가기

Algorithm

2108 통계학 / 정렬 / 딕셔너리

 

Dictionary

  • key- value 로 이루어진 순서가 없는 자료형
  • 선언 : f = {} #최빈값을 저장할 딕셔너리
  • 삽입 : f[n] = 1
print(student.items())  # 출력: dict_items([('name', 'John'), ('age', 21), ('year', 3)])
print(student.keys())  # 출력: dict_keys(['name', 'age', 'year'])
print(student.values())  # 출력: dict_values(['John', 21, 3])

 

정답

  • 최빈값을 구하기 위해서 딕셔너리를 선언하여 입력
  • around(값) -> 소수점 0번째 자리까지 반올림해서 출력 : 1.6. -> 2
  • around(값, 1) ->  소수점 1번째 자리까지 반올림해서 출력 : 1.23 -> 1.2
n = int(input())

number_list = []
for _ in range(n):
    k = int(input())
    number_list.append(k)

f = {} #최빈값을 저장할 딕셔너리
for n in number_list:
    if n in f: #키값이 이미 딕셔너리에 존재한다면, 기존에 있는 거에서 1증가
        f[n] += 1
    else:
        f[n] = 1

max_count = max(f.values()) #가장 많이 나온 빈도수
modes = []
m_result = 0

for key, value in f.items():
    if value == max_count:
        modes.append(key)


if len(modes) == 1:
    m_result = modes[0]
else:
    modes.sort()
    m_result = modes[1]


avg = round(sum(number_list) / len(number_list))
number_list.sort()
median = number_list[len(number_list) // 2]

number_range = max(number_list) - min(number_list)

print(avg)
print(median)
print(m_result)
print(number_range)