1. 문제 설명



2. 코드
import sys
from collections import Counter
input = sys.stdin.readline
N = int(input())
nums = list(int(input()) for _ in range(N))
# 1) 산술 평균
avg = round(sum(nums)/N)
# 2) 중앙값
nums.sort()
median = nums[N//2]
# 3) 최빈값
cnt = Counter(nums)
max_freq = max(cnt.values())
modes = [x for x, f in cnt.items() if f == max_freq]
modes.sort()
mode = modes[0] if len(modes) == 1 else modes[1]
# 4) 범위
rng = nums[-1] - nums[0]
print(avg)
print(median)
print(mode)
print(rng)
3. 풀이 과정
리스트로 값들을 집합으로 묶고 하나씩 해결한다.
산술 평균은 반올림을 해야 하기 때문에 round()로 평균을 묶는다.
중앙값은 sort()로 정렬시킨 후, 중앙값의 인덱스 N//2에 있는 값을 불러온다.
최빈값은 Counter 패키지를 받아서 nums의 값들의 빈도 수를 해시맵 형태로 계산한다.
최빈값을 max()로 values() 값들 중 찾아서 저장한다.
최빈값의 여러개 일때의 경우를 해결하기 위해서 modes 변수에 items()로 cnt를 받아 값 f가 최빈값과 같은 x들로 리스트를 선언한다.
modes를 sort()로 정렬시킨 후, 최빈값이 1개인 경우에는 1번째 modes[0]을 저장하고, 2개 이상인 경우에는 2번째 modes[1]을 저장한다.
범위는 끝값 nums[-1]에서 초기값 nums[0]을 빼서 계산한다.
이후 정의된 값들을 출력하면 된다.
반응형
'Baekjoon(Python) > 단계별로 풀어보기(Python)' 카테고리의 다른 글
| [백준][19단계 재귀] 10870번 /피보나치 수 5 (파이썬/Python) (0) | 2025.10.16 |
|---|---|
| [백준][18단계 심화 2] 20920번 /영단어 암기는 괴로워 (파이썬/Python) (0) | 2025.10.15 |
| [백준][18단계 심화 2] 26069번 /붙임성 좋은 총총이 (파이썬/Python) (0) | 2025.10.10 |
| [백준][18단계 심화 2] 25192번 /인사성 밝은 곰곰이 (파이썬/Python) (0) | 2025.10.09 |
| [백준][18단계 심화 2] 1037번 /약수 (파이썬/Python) (0) | 2025.10.09 |