๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โญ Problem_Solving/๋ฐฑ์ค€

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

by ํฌ์ŠคํŠธ์‰์ดํฌ 2022. 9. 29.

<๋ฌธ์ œ ๋งํฌ>

https://www.acmicpc.net/problem/2212

 

2212๋ฒˆ: ์„ผ์„œ

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

www.acmicpc.net

<ํ’€์ด ์ „๋žต>

  1. ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ถ„๋ฅ˜๋˜๋Š” ๋ฌธ์ œ์ธ๋ฐ ๋Œ€๋ถ€๋ถ„์˜ ๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ๊ฐ€ ๊ทธ๋ ‡๋“ฏ์ด ๊ทธ๋ฆฌ๋””์ธ ๊ฑธ ์•Œ๊ณ  ๋‚˜๋ฉด ์‰ฝ๋‹ค. ๊ทธ๋ฆฌ๋””์ธ ๊ฑธ ์•Œ๊ณ  ํ™•์‹ ํ•˜๊ธฐ๊นŒ์ง€๊ฐ€ ์–ด๋ ค์›Œ์„œ ๊ทธ๋ ‡์ง€...
  2. ์„ผ์„œ์™€ ์ง‘์ค‘๊ตญ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ตœ์†Œํ™” ํ•ด์•ผ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„ผ์„œ ๊ฐ„ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ํฐ ์ง€์—ญ์ด ์ง‘์ค‘๊ตญ ์ˆ˜์‹  ์˜์—ญ ๋‚ด์— ํฌํ•จ๋˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ๋œ๋‹ค.
  3. ๋”ฐ๋ผ์„œ ์„ผ์„œ ๊ฐ„ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•ด์„œ ๊ฐ€์žฅ ๊ฑฐ๋ฆฌ๊ฐ€ ํฐ ์ง€์—ญ K - 1๊ฐœ๋ฅผ ์ด ์ง€์—ญ์—์„œ ๋นผ์ฃผ๋ฉด ๋œ๋‹ค.
    • ํ…์ŠคํŠธ๋กœ ์จ์„œ ์ข€ ํ—ท๊ฐˆ๋ฆฌ๋Š”๋ฐ ๊ทธ๋ฆผ์œผ๋กœ ๊ทธ๋ ค๋ณด๋ฉด ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ์–ด์ฐจํ”ผ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๊ฑฐ๊ธฐ ๋•Œ๋ฌธ์— ์ง‘์ค‘๊ตญ์„ ์„ค์น˜ํ•˜๋Š” ์ •ํ™•ํ•œ ์œ„์น˜๋Š” ํ•„์š” ์—†๋‹ค.
  5. ๊ทธ ์™ธ์— ์„ผ์„œ ์ขŒํ‘œ ์ค‘๋ณต ์ œ๊ฑฐํ•˜๋Š” ๊ฑฐ๋ž‘ ์ง‘์ค‘๊ตญ ๊ฐœ์ˆ˜๊ฐ€ ๋” ๋งŽ์„ ๋•Œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋งŒ ์‹ ๊ฒฝ ์จ์ฃผ๋ฉด ๋œ๋‹ค.

6. ์ถ”๊ฐ€๋กœ 15553 ๋‚œ๋กœ(https://www.acmicpc.net/problem/15553) ๋ฌธ์ œ๋„ ๋งค์šฐ ์œ ์‚ฌํ•˜๋‹ˆ๊นŒ ํ•œ๋ฒˆ ํ’€์–ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

<์ •๋‹ต ์ฝ”๋“œ>

# 220903 2212 ์„ผ์„œ

# ์ •๋‹ต์ฝ”๋“œ

import sys
input = sys.stdin.readline

# N: ์„ผ์„œ์˜ ๊ฐœ์ˆ˜, K: ์ง‘์ค‘๊ตญ์˜ ๊ฐœ์ˆ˜ sensor: ์„ผ์„œ์˜ ์ขŒํ‘œ
N = int(input())
K = int(input())
sensor = list(map(int, input().split()))

# ์„ผ์„œ ์ขŒํ‘œ ์ค‘๋ณต ์ œ๊ฑฐ ํ›„ ์ •๋ ฌ
sensor = list(set(sensor))
sensor.sort()

# ์ง‘์ค‘๊ตญ ๊ฐœ์ˆ˜๊ฐ€ ์ •๋ ฌ๋œ ์„ผ์„œ ๊ฐœ์ˆ˜๋ณด๋‹ค ๋งŽ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์ˆ˜์‹  ๊ฐ€๋Šฅ ์˜์—ญ์€ 0์ด๋‹ค.(๊ฐ ์„ผ์„œ๋งˆ๋‹ค ์„ค์น˜)
if K >= len(sensor):
    print(0)
# ์„ผ์„œ ๊ฐœ์ˆ˜๊ฐ€ ๋” ๋งŽ์„ ๋•Œ
else:        
    # ๊ฐ ์„ผ์„œ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•œ๋‹ค.
    distance = [0]
    for i in range(1, len(sensor)):
        distance.append(sensor[i] - sensor[i-1])

    # ์„ผ์„œ ๊ฑฐ๋ฆฌ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
    distance.sort(reverse=True)

    # total_distance: ์„ผ์„œ ๊ฐ„ ๊ฑฐ๋ฆฌ์˜ ํ•ฉ
    total_distance = sum(distance)

    # ์„ผ์„œ ๊ฐ„ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ํฐ ์˜์—ญ K-1๊ฐœ๋ฅผ ๊ฑฐ๋ฆฌ ์ดํ•ฉ์—์„œ ๋นผ์ค€๋‹ค.
    for i in range(K - 1):
        total_distance -= distance[i]

    print(total_distance)

๋Œ“๊ธ€