백준 2212번 센서

DARTZ·2022년 5월 10일
0

알고리즘

목록 보기
50/135
import sys

input = sys.stdin.readline

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

if N <= K: # 만약에 K가 N이랑 같거나 크면 문제 성립이 안되기 때문에 0을 출력 프로그램 종료
    print(0)
    exit()

position = list(map(int, input().split()))

position.sort() # 거리를 정렬해준다. 인접한 애들끼리 묶어야 하기 때문에
dist = [] # 거리의 차이를 저장할 리스트 변수를 만들어준다.

for i in range(1, N):
    dist.append(position[i] - position[i-1]) # 거리의 차이를 저장한다.

dist.sort() # 거리의 차이를 정렬한다. 

for _ in range(K-1): # 기지국의 갯수 -1 만큼 높은 거리의 차이를 빼준다. 
					 # why? 가장 거리차이가 많이 나는 곳은 기지국을 새로 세우는 것이 거리상 이득이기 때문에!
    dist.pop()

print(sum(dist))

문제가 너무 이해가 안되어서 고민을 오래 했다. 문제가 이해한 뒤에는 금방 풀었다.

profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글