๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/๊ตฌํ˜„

[๋ฐฑ์ค€]2108๋ฒˆ: ํ†ต๊ณ„ํ•™

by syLim___ 2023. 4. 27.
728x90

https://www.acmicpc.net/problem/2108

 

2108๋ฒˆ: ํ†ต๊ณ„ํ•™

์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 500,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹จ, N์€ ํ™€์ˆ˜์ด๋‹ค. ๊ทธ ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ์ •์ˆ˜๋“ค์ด ์ฃผ์–ด์ง„๋‹ค. ์ž…๋ ฅ๋˜๋Š” ์ •์ˆ˜์˜ ์ ˆ๋Œ“๊ฐ’์€ 4,000์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

www.acmicpc.net


python

 

import sys 
input = sys.stdin.readline
from collections import Counter

def find_mode(data):
  cnt = Counter(data)
  cnt = cnt.most_common()
  if cnt[0][1] == cnt[1][1]:
    return cnt[1][0]
  else:
    return cnt[0][0]
  
data = []

n = int(input())
for _ in range(n):
  x = int(input())
  data.append(x)

if n == 1:
  print(x)
  print(x)
  print(x)
  print(0)
  exit()

data.sort()

print(int(round(sum(data)/n,0)))	#์‚ฐ์ˆ ํ‰๊ท 
print(data[n//2])	#์ค‘์•™๊ฐ’
print(find_mode(data))	#์ตœ๋นˆ๊ฐ’
print(data[-1]-data[0])	#๋ฒ”์œ„

 

1. ์ž…๋ ฅ๋ฐ›์€ data๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

 

2. ์‚ฐ์ˆ ํ‰๊ท  ๊ตฌํ•˜๊ธฐ (์†Œ์ˆ˜์  ์ฒซ์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ) - sum(), round() ํ™œ์šฉ

round(number, ndigits)
 - number๋ฅผ ์†Œ์ˆ˜์  ndigits ์ •๋ฐ€๋„๋กœ ๋ฐ˜์˜ฌ๋ฆผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜
 - ndigits ์ƒ๋žตํ•˜๋ฉด, number์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

 

3. ์ค‘์•™๊ฐ’ ๊ตฌํ•˜๊ธฐ - ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ•˜๊ธฐ

 

4. ์ตœ๋นˆ๊ฐ’ ๊ตฌํ•˜๊ธฐ - Counter ์ด์šฉ

 - most_common() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ counter๊ฐ’ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ–ˆ์„ ๋•Œ ์ตœ์ดˆ 2๊ฐœ๋ฅผ ๊ตฌํ•œ๋‹ค.

 - ๋‘˜์˜ counter๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด ์ตœ๋นˆ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋‘๋ฒˆ์งธ ์ˆ˜๋ฅผ, ๋‹ค๋ฅด๋‹ค๋ฉด ์ตœ๋นˆ๊ฐ’์ด ํ•˜๋‚˜์ด๋ฏ€๋กœ ์ฒซ๋ฒˆ์งธ ์ˆ˜๋ฅผ ๋ฆฌํ„ด

 

5. ๋ฒ”์œ„ ๊ตฌํ•˜๊ธฐ

 

6. n==1์ธ ๊ฒฝ์šฐ ์ตœ๋นˆ๊ฐ’๊ณผ ๋ฒ”์œ„๋ฅผ ๊ตฌํ•  ๋•Œ ์ธ๋ฑ์Šค ์—๋Ÿฌ๊ฐ€ ๋‚˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๊ฒฝ์šฐ๋Š” ๋”ฐ๋กœ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

728x90