๋ฐฑ์ค 2108๋ฒ
import sys
input = sys.stdin.readline
N = int(input())
ave = 0 # ์ฐ์ ํ๊ท
nums = []
numDic = {} # ์ต๋น๊ฐํ ๋์
๋๋ฆฌ
for _ in range(N):
num = int(input())
nums.append(num)
ave = ave + num
# input๊ฐ์ ๋น๋์ ์ค์
if num not in numDic: # ๊ฐฏ์ ์ธ๋ ๋์
๋๋ฆฌ
numDic[num] = 1
else:
numDic[num] = numDic[num] + 1
sorted_dict = sorted(
numDic.items(), key=lambda item: (item[1], item[0]), reverse=True)
# ๋น๋์(value)๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค์ ๊ฐ์ ํฌ๊ธฐ(key)๋ก ์ ๋ผ
# ex) {-8:2, 1:2 ,-7:2, 3:3} ์ผ๋ -> [(3,3),(1,2),(-7,2),(-8,2)]
most_counting_numVal = sorted_dict[0][1] # ๊ฐ์ฅ ๋ง์ ๋น๋์ ๊ฐ์ Val
most_counting_numKey = sorted_dict[0][0] # ๊ฐ์ฅ ๋ง์ ๋น๋์ ๊ฐ์ key๋ฅผ ๋ฝ์
if N > 1:
# ๋์ผํ ๋น๋์๊ฐ 1๊ฐ ์ด์ ์ผ ๋
if most_counting_numVal == sorted_dict[1][1]:
test = [sorted_dict[0][0]]
for i in range(1, len(sorted_dict)):
if sorted_dict[i-1][1] == sorted_dict[i][1]:
test.append(sorted_dict[i][0])
else:
break
# ๋์ผํ ๋น๋์์ ๊ฐ๋ค์ด ๋ด๋ฆผ์ฐจ์์ผ๋ฌ ๋ค์ด๊ฐ ๋ฐฐ์ด์ด ๋ง๋ค์ด์ง๋ค.
most_counting_numKey = sorted(test)[1]
# ๋๋ฒ์งธ๋ก ํฐ ๊ฐ์ ์ถ์ถ
nums.sort() # ์ซ์ ์ ๋ ฌ
# key๊ฐ์ด ์ ๋ น๋ ๋์
๋๋ฆฌ ์ถ์ถ value๋ ์ ๋ ฌ ์๋จ
ave = ave / N
middleVal = nums[(N-1) // 2]
min = nums[0]
max = nums[N - 1]
rng = 0 # ๋ฒ์
if min != max: #๋ฒ์๊ฐ ์์ ๋
rng = max - min
rng = abs(rng) # -๊ฐ์ด ์์ ์๋ ์์ผ๋ ์ ๋๊ฐ
print(round(ave)) # ์ฐ์ ํ๊ท ์์ ์ฒซ์งธ์์ ๋ฐ์ฌ๋ฆผ
print(middleVal) # ์ค์ ๊ฐ
print(most_counting_numKey) # ์ต๋น๊ฐ
print(rng) # ๋ฒ์
์ต๋น๊ฐ์ ๊ตฌํ๋ ๊ฒ์ด ๋จธ๋ฆฌ ์ํ ์ง๋ง
sorted()
๋ก ๋์
๋๋ฆฌ์ key์ value๊ฐ์ ๋์์ ์ ๋ ฌ์ ์ค ์ ์๋ค๋ ๊ฒ์ ๋์๋ฐ์ ํ ์ ์์์ต๋๋ค.