๊ด€๋ฆฌ ๋ฉ”๋‰ด

CS Studentโ€™s SAP&Tech Journey๐Ÿ’ซ

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

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€ | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค | ์†Œํ”„ํ‹ฐ์–ด

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

์ธํฌ๋งˆํ‹ฑ 2024. 11. 14. 15:35

1. ๋ฐฑ์ค€ 2108๋ฒˆ ํ†ต๊ณ„ํ•™

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

 

2. ์˜ค๋Š˜์˜ ํšŒ๊ณ 

0. ๋ฌธ์ œ ๋ถ„์„

  1. ์‚ฐ์ˆ ํ‰๊ท  : N๊ฐœ์˜ ์ˆ˜๋“ค์˜ ํ•ฉ์„ N์œผ๋กœ ๋‚˜๋ˆˆ ๊ฐ’
  2. ์ค‘์•™๊ฐ’ : N๊ฐœ์˜ ์ˆ˜๋“ค์„ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ๋‚˜์—ดํ–ˆ์„ ๊ฒฝ์šฐ ๊ทธ ์ค‘์•™์— ์œ„์น˜ํ•˜๋Š” ๊ฐ’
  3. ์ตœ๋นˆ๊ฐ’ : N๊ฐœ์˜ ์ˆ˜๋“ค ์ค‘ ๊ฐ€์žฅ ๋งŽ์ด ๋‚˜ํƒ€๋‚˜๋Š” ๊ฐ’
  4. ๋ฒ”์œ„ : N๊ฐœ์˜ ์ˆ˜๋“ค ์ค‘ ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์˜ ์ฐจ์ด

 

1. ์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(1 โ‰ค N โ‰ค 500,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹จ, N์€ ํ™€์ˆ˜์ด๋‹ค.

 

2. ์ถœ๋ ฅ

์ถœ๋ ฅ ๋ถ€๋ถ„์—์„œ ์ฃผ์˜ํ•ด์„œ ๋ด์•ผ ํ•  ์ ์€ ์‚ฐ์ˆ ํ‰๊ท ์„ ์ถœ๋ ฅํ•  ๋•Œ๋Š” ์†Œ์ˆ˜์  ์ดํ•˜ ์ฒซ์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ์ •์ˆ˜๊ฐ’์„ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ์ตœ๋นˆ๊ฐ’์„ ์ถœ๋ ฅํ•  ๋•Œ๋Š” ์ตœ๋นˆ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๋•Œ ์ตœ๋นˆ๊ฐ’ ์ค‘ ๋‘ ๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’ ( = 3, 4๊ฐ€ ์žˆ์œผ๋ฉด ๋‘๋ฒˆ์งธ๊ฐ€ ์ž‘์€ ๊ฐ’์€ 4์ด๋‹ค)์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

3. ๋ฌธ์ œ์ ‘๊ทผ

1. ์ž…๋ ฅ ๊ฐ’์„ nlist์— ๋‹ด๋Š”๋‹ค.

2. ๊ฐ๊ฐ ํ†ต๊ณ„๊ฐ’์„ ๊ณ„์‚ฐํ•œ๋‹ค.

 1) ์‚ฐ์ˆ ํ‰๊ท  : nlist์˜ ํ•ฉ // N

 2) ์ค‘์•™๊ฐ’ : ๋ฌด์กฐ๊ฑด ํ™€์ˆ˜๋กœ N์„ ์ฃผ์–ด์ง€๋ฏ€๋กœ ๊ฐ€์šด๋ฐ ๊ฐ’์ด ์ค‘์•™๊ฐ’. nlist [N//2]

 3) ์ตœ๋นˆ๊ฐ’ : ํ•ด์‹œ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ฐœ์ˆ˜๋ฅผ ์„ธ์–ด์ค€๋‹ค.

                   ๋”•์…”๋„ˆ๋ฆฌ ์ƒ์„ฑ ํ›„, sorted๋ฅผ ์ด์šฉํ•ด ์ •๋ ฌํ•œ๋‹ค.

                   lambda ์ธ์ž i) ์ตœ๋นˆ๊ฐ’์ด๋‹ˆ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ii) ์—ฌ๋Ÿฌ๊ฐœ ์žˆ์„ ๋•Œ, ๋‘๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ

 4) ๋ฒ”์œ„ : nlist์˜ ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์˜ ์ฐจ

 

โœ… ์‹œ๊ฐ„์ดˆ๊ณผ

์‹œ๊ฐ„์ดˆ๊ณผ๋ฅผ ์ค„์ด๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ๋ณธ ์„ค์ •์ธ๋ฐ, ๋งค๋ฒˆ ๊นŒ๋จน๋Š”๋‹ค. ๊ผญ ๊ธฐ์–ตํ•˜์ž!

import sys
input = sys.stdin.readline

 

โœ… ์†Œ์ˆ˜์  ๋ฐ˜์˜ฌ๋ฆผ

t = f"{t:.0f}" #์†Œ์ˆ˜์  ์ฒซ์งธ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ
t = f"{t:.1f}" #์†Œ์ˆ˜์  ๋‘˜์งธ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ

 

โœ… ํ•ด์‹œ ๋”•์…”๋„ˆ๋ฆฌ ํ‚ค, ๊ฐ’ ์ƒ์„ฑํ•˜๊ธฐ

# ํ•ด์‹œ
d = dict()

# ๋”•์…”๋„ˆ๋ฆฌ ์ƒ์„ฑ 
for i in nlist:
    if i in d:
        d[i]= d[i]+1
    else:
        d[i]=1

# ๋”•์…”๋„ˆ๋ฆฌ
d = {1: 4, 2: 5, 3:1, 4:8}
d.keys = [1,2,3,4]
d.values = [4,5,1,8]
d.items = [(1,4), (2,5), (3,1), (4,8)]

 

โœ… lambda ํ•จ์ˆ˜ 

d.items() = [(1,4), (2,5), (3,1), (4,8)]
sorted(d.items(), key=lambda x:(-x[1],x[0]))

# x:(-x[1],x[0])์ด๋ฉด -x[1] ์ ์šฉ ํ›„ ๊ทธ ๊ฒฐ๊ณผ์— x[0] ์ ์šฉํ•ด์•ผํ•จ
# 1) lambda ์ธ์ž x[1]: x[1]๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ / -x[1]: x[1]๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ
# 2) lambda ์ธ์ž x[0]: x[0]๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ

 

3. ์ •๋‹ต ์ฝ”๋“œ

import sys
input = sys.stdin.readline
a = int(input())
nlist = []
for i in range(a):
    n = float(input())
    nlist.append(n)
    
# ์‚ฐ์ˆ ํ‰๊ท 
t = (sum(nlist)/a)
t = f"{t:.0f}"
print(int(t))

# ์ค‘์•™๊ฐ’
nlist.sort()
print(int(nlist[a//2]))

# ์ตœ๋นˆ๊ฐ’
d = dict()
for i in nlist:
    if i in d:
        d[i]= d[i]+1
    else:
        d[i]=1
newd = sorted(d.items(), key=lambda x:(-x[1],x[0]))
if len(newd)>1 and newd[0][1]== newd[1][1]: # ์ตœ๋นˆ๊ฐ’์ด ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ์šฐ
    print(int(newd[1][0]))
else: # ์ตœ๋นˆ๊ฐ’์ด ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ
    print(int(newd[0][0]))
    
# ๋ฒ”์œ„
print(int(max(nlist)-min(nlist)))