https://www.acmicpc.net/problem/10773
from collections import Counter
n = int(input())
arr = [0] * n # 속도 향상을 위해 0으로 초기화
for i in range(n): # n개의 정수를 입력 받아 arr에 저장
arr[i] = int(input())
arr.sort()
print(round(sum(arr)/n)) # 산술 평균
print(arr[n//2]) # 중앙값
# 최빈값 - Counter 함수 사용
common = sorted(Counter(arr).most_common())
if len(common) == 1:
print(common[0][0])
else:
print(common[1][0])
print(arr[-1] - arr[0]) # 범위
최빈값 구하는 게 어려워서 헤매다가 Counter 함수를 억지로 맞춰 끼웠다.
하지만 틀렸다.
from collections import Counter
n = int(input())
arr = [0] * n
for i in range(n):
arr[i] = int(input())
arr.sort()
print(round(sum(arr)/n))
print(arr[n//2])
common = Counter(arr).most_common()
if len(common) == 1:
print(common[0][0])
elif common[0][1] == common[1][1]:
print(common[1][0])
else:
print(common[0][0])
print(arr[-1]-arr[0])
최빈값을 구할 때, 조건을 올바르게 정정했다.
그러나 시간 초과가 발생했다.
from collections import Counter
import sys
input = sys.stdin.read
data = input().split()
n = int(data[0])
arr = list(map(int, data[1:n+1]))
arr.sort()
print(round(sum(arr)/n))
print(arr[n//2])
common = Counter(arr).most_common()
if len(common) == 1:
print(common[0][0])
elif common[0][1] == common[1][1]:
print(common[1][0])
else:
print(common[0][0])
print(arr[-1]-arr[0])
풀이 2에서 시간 초과가 발생해서
GPT 선생님께 입력 부분을 개선해달라고 했는데, 아래 내용을 개선해주었다.
import sys
input = sys.stdin.read
data = input().split()
n = int(data[0])
arr = list(map(int, data[1:n+1]))
풀이 3보다 속도는 조금 더 걸리지만 메모리를 훨씬 적게 쓰는 훌륭한 코드이다.
import sys
input = sys.stdin.readline
n = int(input())
data = []
_sum = 0
count = dict()
for _ in range(n):
x = int(input())
data.append(x)
_sum += x
if x not in count:
count[x] = 1
else:
count[x] += 1
data.sort()
# 산술평균
print(round(_sum/n))
# 중앙값
print(data[n//2])
# 최빈값
freq = max(count.values())
numbers = []
for key, value in count.items():
if value == freq:
numbers.append(key)
if len(numbers) == 1:
print(numbers[0])
else:
print(sorted(numbers)[1])
# 범위
print(data[-1] - data[0])
풀이 3이 어거지라고 생각했는데, 다른 분들 풀이를 보니 다들 비슷하게 푸신 것 같다.
그냥 어거지 문제였나보다 !-!