문제 링크
알고리즘
- 그리디
- 정렬
풀이
아이디어를 떠올린다면 풀 수 있는 문제였다. 핵심 아이디어만 알아낸다면 굉장히 쉬운 문제로 바뀌기에 기억에 남는 문제다.
문제를 읽고 곰곰이 생각해보면 n개의 센서를 k개 그룹으로 묶으라는 말이다. 단, 각 그룹의 센서 간의 거리를 최소화 해야 한다.
따라서 센서 간의 거리를 내림차순으로 정렬한 후에 k개의 그룹으로 묶일 수 있도록 (k-1)번 동안 리스트 내의 가장 큰 값을 제거해주면 된다.
서로 간의 거리가 제거 되지 않은, 즉 연결고리가 끊어지지 않은 센서들끼리 묶는 것이다.
- 센서와 집중국의 개수가 같다면 각 센서마다 집중국을 배치하면 되니까 0을 출력하면 된다.
- 그렇지 않다면 센서의 위치에 따라서 정렬한다.
- 리스트를 하나 만들어서 센서 간의 거리를 내림차순으로 정렬해서 저장한다.
- 앞에서 만든 리스트의 가장 큰 값을 (k-1)번 제거한다.
- 리스트 안에 남은 값들을 합친 값이 답이다.
전체 코드
1 |
|