๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ด๐ป/[๐๐ฒ๐ญ๐ก๐จ๐ง] ๐๐ฅ๐ ๐จ๐ซ๐ข๐ญ๐ก๐ฆ
[Python] ๋ฐฑ์ค 1461 & ๋ฐฑ์ค 2212
๐คRyusun๐ค
2023. 6. 25. 22:34
# ๋ฐฑ์ค 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))