๊ธฐ๋ก๋ฐฉ

BOJ_2108 : ํ†ต๊ณ„ํ•™ ๋ณธ๋ฌธ

CodingTest/Python

BOJ_2108 : ํ†ต๊ณ„ํ•™

Soom_1n 2022. 8. 18. 22:10

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

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

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

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž๋“ค์˜ ์‚ฐ์ˆ ํ‰๊ท , ์ค‘์•™๊ฐ’, ์ตœ๋นˆ๊ฐ’, ๋ฒ”์œ„๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import sys
from collections import Counter

input = sys.stdin.readline
print = sys.stdout.write

N = int(input())
arr = []

for i in range(N):
    arr.append(int(input()))

arr.sort()

print(str(round(sum(arr)/N)) + "\n")
print(str(arr[N//2]) + "\n")
cnt = Counter(arr).most_common(2)
if len(cnt) > 1 and cnt[0][1] == cnt[1][1]:
    print(str(cnt[1][0]) + "\n")
else:
    print(str(cnt[0][0]) + "\n")
print(str(arr[-1] - arr[0]) + "\n")

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • N์˜ ๋ฒ”์œ„๊ฐ€ 50๋งŒ๊นŒ์ง€ ๊ฐ€๊ธฐ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์ž…์ถœ๋ ฅ์„ ์‚ฌ์šฉํ–ˆ๋‹ค.
  • ์ˆซ์ž๋Š” ๋ฆฌ์ŠคํŠธ์— ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
  • ์‚ฐ์ˆ ํ‰๊ท  : ๋ฆฌ์ŠคํŠธ์˜ ์ดํ•ฉ / N ์„ ๋ฐ˜์˜ฌ๋ฆผํ•œ๋‹ค.
  • ์ค‘์•™๊ฐ’ : ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌ ํ›„ N/2 ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • ์ตœ๋นˆ๊ฐ’ : collections ๋ชจ๋“ˆ์˜ Counter๋กœ ๋นˆ๋„์ˆ˜๋ฅผ ์ฒดํฌํ•œ๋‹ค.
    • Counter์˜ most_common()์œผ๋กœ ๋นˆ๋„์ˆ˜๋ฅผ ํŠœํ”Œ๋กœ ๋งŒ๋“ ๋‹ค.
  • ๋ฒ”์œ„ : ์ตœ๋Œ€๊ฐ’ - ์ตœ์†Œ๊ฐ’

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์˜ˆ์ „์— ํ’€๋‹ค๊ฐ€ ์‹คํŒจํ•œ ๋ฌธ์ œ์ด๋‹ค. ์ตœ๋นˆ๊ฐ’ ๊ณ„์‚ฐ๊ณผ ์ •๋ ฌ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋ ค๋‹ค๊ฐ€ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ์—ˆ๋‹ค.
  • collections ๋ชจ๋“ˆ์—์„œ deque๋งŒ ์ผ์—ˆ๋Š”๋ฐ Counter๋„ ์ข‹์€ ๊ธฐ๋Šฅ์ธ ๊ฒƒ ๊ฐ™์•„ ์•Œ์•„๋‘ฌ์•ผ๊ฒ ๋‹ค. (์ฐธ๊ณ ํฌ์ŠคํŒ…)

728x90

'CodingTest > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_18111 : ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ  (0) 2022.08.21
BOJ_2805 : ๋‚˜๋ฌด ์ž๋ฅด๊ธฐ  (0) 2022.08.20
BOJ_10866 : ๋ฑ  (0) 2022.08.17
BOJ_15828 : Router  (0) 2022.08.16
BOJ_2161 : ์นด๋“œ1  (0) 2022.08.16