티스토리 뷰

728x90

www.acmicpc.net/problem/2212

 

2212번: 센서

첫째 줄에 센서의 개수 N(1<=N<=10,000), 둘째 줄에 집중국의 개수 K(1<=K<=1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 이상 있으며

www.acmicpc.net

풀이

입력 좌표를 오름차순(혹은 내림차순)으로 정렬 한 뒤, 바로 뒤 원소와의 차를 sub 배열에 담는다.

sub 배열을 오름차순으로 정렬한 다음, k-1만큼 큰 값을 제거한다. (수신 가능 영역 길이의 합의 최솟값을 구해야하기 때문)

그리고 남은 sub 요소들을 더하면 된다.

 

k가 n보다 크거나 같을 경우를 생각해야된다.

안그러면 index 에러가 뜨기 때문 !!

 

소스코드

n = int(input())
k = int(input())
arr = list(map(int, input().split()))
arr.sort()
sub = []*(n-1)

if k>=n:
    print(0)
    exit()
    
for i in range(n-1):
    sub.append(arr[i+1]-arr[i])

sub.sort()

for i in range(k-1):
    sub.pop()

print(sum(sub))
반응형