백준 2212번 파이썬
https://www.acmicpc.net/problem/2212
센서 사이의 거리를 구하고 (집중국의 개수 - 1)개 만큼 내림차순 순으로 빼준 후 나머지 거리들을 더해주면 된다.
원래는 거리의 차 중, 서로 붙어 있는 값은 빼면 안되는 줄 알았다. 붙어있는 거리를 모두 빼버리면 거리 사이에 있는 센서를 포함 못 시키는 줄 알았다. 자만심에 눈이 멀어 문제 자체를 의심했었다,,,
알아보니 집중국이 커버칠 수 있는 거리가 0인 조건을 빼먹은 것이다. 뺄 수 있는 거리의 개수는 (집중국-1)개라 붙어있는 거리를 제외시켜도 중간에 낀 센서를 집중국이 포함시킬 수 있기 때문에 가장 큰 거리를 제외시켜주면 된다.
import sys
input = sys.stdin.readline
N = int(input())
K = int(input())
sensor = sorted(list(map(int, input().split())))
sensor_diff = []
for i in range(len(sensor)-1):
diff = sensor[i+1] - sensor[i]
if diff != 0:
sensor_diff.append(diff)
else:
pass
if len(sensor_diff) == 0 and K >= N:
print(0)
else:
if K == 1:
print(sum(sensor_diff))
else:
sensor_diff.sort()
for _ in range(K-1):
sensor_diff.pop()
print(sum(sensor_diff))
조건 확인 잘하고 절대 문제가 오류날 일 없다는 점 명심하자,,, 틀리면 내가 문제인 것이다,,, 오류가 있었으면 일찌감치 고수님들이 건의해서 고쳤을 것이다,,,