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

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[Python] ๋ฐฑ์ค€ 1461 & ๋ฐฑ์ค€ 2212 ๋ณธ๋ฌธ

# ๋ฐฑ์ค€ 1461 ๋„์„œ๊ด€
# ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜

# ์Œ์ˆ˜์™€ ์–‘์ˆ˜์— ๋Œ€ํ•ด์—ฌ ๊ฐœ๋ณ„์ ์œผ๋กœ, m๊ฐœ์”ฉ ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌ

import heapq
# heapq๋Š” ์Œ์ˆ˜๋„ ์ธ์‹ํ•˜๊ธฐ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ํฐ ๋งˆ์ด๋„ˆ์Šค๊ฐ’, ์ฆ‰ ๊ฐ€์žฅ ์ž‘์€๊ฐ’์„ ๊ตฌํ•˜๊ธฐ์œ„ํ•ด ๋ชจ๋“  ์›์†Œ๋ฅผ ๋งˆ์ด๋„ˆ์Šค๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

n, m = map(int, input().split(' '))
array = list(map(int, input().split(' ')))
positive = []
negative = []

# ๊ฐ€์žฅ ๊ฑฐ๋ฆฌ๊ฐ€ ๋จผ ์ฑ…์˜ ์œ„์น˜์ฐพ๊ธฐ
farest = max(max(array), -min(array))

for i in array:
    # ์ฑ…์˜ ์œ„์น˜๊ฐ€ ์–‘์ˆ˜์ธ ๊ฒฝ์šฐ
    if i > 0:
        heapq.heappush(positive, -i)
    # ์ฑ…์˜ ์œ„์น˜๊ฐ€ ์Œ์ˆ˜์ธ๊ฒฝ์šฐ
    else:
        heapq.heappush(negative, i)

result = 0
while positive:
    # ํ•œ๋ฒˆ์— m๊ฐœ์”ฉ ์˜ฎ๊ธธ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ m๊ฐœ์”ฉ ๋นผ๋‚ธ๋‹ค
    result += heapq.heappop(positive)
    for _ in range(m-1): # #๋‚˜๋จธ์ง€๋„ ๋ฝ‘๋Š”๋‹ค
        if positive:
            heapq.heappop(positive)

while negative:
    result += heapq.heappop(negative)
    for _ in range(m-1):
        heapq.heappop(negative)

#์™•๋ณต๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•ด์•ผ๋˜๊ธฐ๋•Œ๋ฌธ์— *2 ํ•ด์ฃผ์ง€๋งŒ ๊ฐ€์žฅ ๋จผ๊ณณ์€ ํŽธ๋„๋กœ ๊ณ„์‚ฐํ•ด์•ผํ•˜๋‹ˆ๊น ํ•œ๋ฒˆ ๋นผ์ค€๋‹ค
print(-result * 2 - farest)
# ๋ฐฑ์ค€ 2212
import sys
n = int(input())
k = int(input())

# ์ง‘์ค‘๊ตญ์˜ ๊ฐœ์ˆ˜๊ฐ€ n์ด์ƒ์ผ๋•Œ
if k >= n:
    print(0)
    sys.exit()

# ๋ชจ๋“  ์„ผ์„œ์˜ ์œ„์น˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
array = list(map(int, input().split(' ')))
array.sort()

# ์„ผ์„œ๊ฐ„ ๊ฑฐ๋ฆฌ์˜ ๋‚ด๋ฆผ์ฐจ ์ •๋ ฌ
distances = []
for i in range(1, n):
    distances.append(array[i] - array[i -1] )
    distances.sort(reverse = True)

# ๊ฐ€์žฅ ๊ธด ๊ฑฐ๋ฆฌ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ œ๊ฑฐ
for i in range(k - 1):
    # ๊ฑฐ๋ฆฌ๋ฅผ 0 ์œผ๋กœ ๋งŒ๋“ฆ์œผ๋กœ์จ ์ œ๊ฑฐ. ์ด๊ฑธ k -1 ๋งŒํผ ๋ฐ˜๋ณต
    distances[i] = 0
print(sum(distances))