728x90
2212번: 센서
첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있
www.acmicpc.net
🤔 문제분석
센서데이터를 그룹핑 하는 문제로 각각의 센서를 그래프로 생각하고, 양 옆에 이웃하는 센서끼리의 거리를 구한뒤, 가장 긴 거리를 k-1 개를 제거한다면 k개의 그룹이 생성되고 가장 긴 거리를 제거 했기때문에 남은 나머지의 간선을 모두 더한다면 수신가능한 영역의 길이의 합이 나온다.
💻 코드
import sys
input = sys.stdin.readline
N = int(input())
K = int(input())
sensor = list(map(int, input().split()))
sensor.sort()
dist = []
for i in range(1, N):
dist.append((sensor[i] - sensor[i-1]))
dist.sort()
for _ in range(K-1):
if dist:
dist.pop()
if K >= N:
print(0)
else:
print(sum(dist))
🎯 피드백 및 개선사항
생각의 발상으로 각각의 센서를 노드로 생각하고, 정렬한뒤에 각 이웃하는 노드끼리 연결한뒤에 가장 긴 간선을 k-1개를 제거한다면 k개의 그룹이 생긴다. 나머지 간선을 더한다면 집중국의 수신가능한 영역의 최소길이가 나온다.
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2473번 : 세 용액 (0) | 2024.02.12 |
---|---|
[백준] 2470번 : 두 용액 (0) | 2024.02.12 |
[백준] 1461번 : 도서관 (1) | 2024.02.11 |
[백준] 13904번 : 과제 (1) | 2024.02.10 |
[백준] 2457번 : 공주님의 정원 (1) | 2024.02.10 |