https://www.acmicpc.net/problem/2108
문제핵심
1. 산술평균, 중앙값 최빈값, 범위 총 4가지 값을 구해야 한다.
2. 최빈값을 구하는 방법을 잘 고려할 것(저는 dict를 사용했습니다)
풀이
n = int(input())
nums = []
for i in range(n):
nums.append(int(input()))
#1.mean
mean = round(sum(nums)/n)
print(mean)
#2.median
nums.sort()
median = nums[n//2]
print(median)
#3.mode
dic = dict()
for i in nums:
if i in dic:
dic[i] += 1
else:
dic[i] = 1
maxinum_mode_value = max(dic.values())
max_mode_list = []
for i in dic:
if dic[i] == maxinum_mode_value:
max_mode_list.append(i)
if len(max_mode_list) != 1:
print(max_mode_list[1])
else:
print(max_mode_list[0])
#4.range
range = nums[-1] - nums[0]
print(range)
팁
dict를 위와 같은 방법으로 사용할 경우 첫 번째 예제에서 dic는 다음과 같이 저장됩니다.
{-2: 1, 1: 1, 2: 1, 3: 1, 8: 1}
따라서 문제의 조건에 맞게 같은 빈도수를 가지고 있는 값들이 여러 개(2개 이상)이기 때문에 두 번째로 작은 값을 출력해 줍니다.
728x90
'파이썬알고리즘' 카테고리의 다른 글
연속 부분 수열 합의 개수 (파이썬) (0) | 2024.10.15 |
---|---|
[토스 NEXT] 2022년 코딩테스트 기출문제 파이썬 풀이 (0) | 2024.09.24 |
프로그래머스 귤 고르기 (파이썬) (0) | 2024.09.04 |
백준 2470 두 용액 (파이썬) (1) | 2024.08.28 |
백준 1931 회의실 배정 (파이썬) (0) | 2024.08.27 |