๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]

[๋ฐฑ์ค€] 2212 ์„ผ์„œ (python ํŒŒ์ด์ฌ)

์ œ๋ด‰์•„ 2024. 3. 27. 12:05
 

2212๋ฒˆ: ์„ผ์„œ

์ฒซ์งธ ์ค„์— ์„ผ์„œ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 10,000), ๋‘˜์งธ ์ค„์— ์ง‘์ค‘๊ตญ์˜ ๊ฐœ์ˆ˜ K(1 ≤ K ≤ 1000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์…‹์งธ ์ค„์—๋Š” N๊ฐœ์˜ ์„ผ์„œ์˜ ์ขŒํ‘œ๊ฐ€ ํ•œ ๊ฐœ์˜ ์ •์ˆ˜๋กœ N๊ฐœ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ์ขŒํ‘œ ์‚ฌ์ด์—๋Š” ๋นˆ ์นธ์ด ํ•˜๋‚˜ ์žˆ

www.acmicpc.net


๋ฌธ์ œ ํ•ด์„์„ ์ž˜ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ.


์•„์ด๋””์–ด

๋จผ์ € ๋ฌธ์ œ๊ฐ€ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๊ฒŒ ํ•„์š”ํ•˜๋‹ค. 
 
๋ฌธ์ œ์—์„œ๋Š” ๊ฐ ์ง‘์ค‘๊ตญ์˜ ์ˆ˜์‹  ๊ฐ€๋Šฅ์˜์—ญ์˜ ๊ฑฐ๋ฆฌ์˜ ํ•ฉ์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋ผ๊ณ  ํ–ˆ๋‹ค.
์ด๋Š” ์•„๋ž˜ ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉฐ ์„ค๋ช…ํ•ด ๋ณด๋ฉด,
 

 
์ด๋Ÿฐ ์‹์œผ๋กœ ๊ฐ ์„ผ์„œ๋“ค์„ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ์˜์—ญ์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ์•Œ๋‹ค์‹œํ”ผ ๋ฌธ์ œ์˜ ๋‹ต์„ ๊ตฌํ•  ๋•Œ ์„ผ์„œ์˜ ์œ„์น˜๋Š” ๊ฒน์ณ๋„ ์ƒ๊ด€์—†๋‹ค.
 
๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด, ์„ผ์„œ๋“ค์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๋จผ ๊ณณ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ง€์›Œ์ฃผ๋ฉด ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ์„ผ์„œ๋“ค์€ ์ฒ˜์Œ์— 1 - 9 ๋ฒ”์œ„์— ์ „๋ถ€ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ 3๊ณผ 6์˜ ์„ผ์„œ๊ฐ€ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์œผ๋ฏ€๋กœ ์ด๊ณณ์„ ๋น„์›Œ์ฃผ๋ฉด 1 - 3, 6 - 9 ๋‘ ๊ฐœ์˜ ์ง‘์ค‘๊ตญ์œผ๋กœ ๋ชจ๋“  ์„ผ์„œ๋ฅผ ์ตœ์†Œ ์˜์—ญ์œผ๋กœ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋Ÿฐ ์‹์œผ๋กœ ์ด ๋ฌธ์ œ๋Š” ๊ฐ„๊ฒฉ์ด ๊ธด ๊ณณ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ง€์›Œ์ฃผ๋ฉด ๋œ๋‹ค. ์ง‘์ค‘๊ตญ์˜ ๊ฐœ์ˆ˜๊ฐ€ K๊ฐœ ์ด๋ฏ€๋กœ K - 1๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ์ง€์›Œ์ฃผ๋ฉด ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ ์ง‘์ค‘๊ตญ ๊ฐœ์ˆ˜๊ฐ€ ์„ผ์„œ ๊ฐœ์ˆ˜๋ณด๋‹ค ๋งŽ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด(K >= N) ๋”ฐ๋กœ ๊ณ„์‚ฐ ํ•„์š” ์—†์ด 0์„ ์ถœ๋ ฅํ•ด ์ฃผ๋ฉด ๋œ๋‹ค. ๊ฐ๊ฐ์˜ ์„ผ์„ธ๋“ค์€ ์ „๋ถ€ ์ปค๋ฒ„ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ.


์ „์ฒด ์ฝ”๋“œ

diffList = [] # ๊ฐ ์„ผ์„œ์˜ ๊ฑฐ๋ฆฌ ์ฐจ์ด ์ €์žฅ

N = int(input())
K = int(input())

sensorList = [int(x) for x in input().split()]

if K >= N:
    print(0)
    exit()

sensorList.sort() # ์„ผ์„œ ์œ„์น˜ ์ •๋ ฌ

for i in range(1, N):
    diffList.append(sensorList[i] - sensorList[i - 1])

for _ in range(K - 1):
    diffList[diffList.index(max(diffList))] = 0

print(sum(diffList))

์ฝ”๋“œ ์„ค๋ช…

sensorList.sort() # ์„ผ์„œ ์œ„์น˜ ์ •๋ ฌ

for i in range(1, N):
    diffList.append(sensorList[i] - sensorList[i - 1])


 ์„ผ์„œ๋“ค์˜ ๊ฑฐ๋ฆฌ์ฐจ๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € ์ •๋ ฌํ•˜๊ณ  ๊ฐ ์„ผ์„œ๋“ค์˜ ๊ฑฐ๋ฆฌ์ฐจ๋ฅผ ๊ณ„์‚ฐํ•ด ์ค€๋‹ค.

 

for _ in range(K - 1):
    diffList[diffList.index(max(diffList))] = 0
    
print(sum(diffList))


๊ฑฐ๋ฆฌ์ฐจ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ๋‚˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ K - 1 ๋ฒˆ ์ œ๊ฑฐํ•ด ์ค€๋‹ค.