본문 바로가기

알고리즘/백준

[백준] 2212번 : 센서

728x90

2212번: 센서

 

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