전에 한 코테에서 쓴 맛을 본 후로.. 백준에서 문제를 풀 때 분류를 안 보고 있다! 문제 풀이를 생각해낼 때 시간이 더 오래 걸리긴 하지만, 그래도 그만큼 더 생각하게 되는 것 같다!!
이 문제를 풀 때 한 생각들의 흐름, 풀이
- 한 위치에 여러 센서가 설치될 수 있다. 그렇지만 그럴 때 하나만 고려하면 된다. -> set을 이용해서 중복을 제거함.
- 각 센서의 번호 같은 건 중요하지 않다. 센서들을 정렬해서 봐야 겠다. -> sort
- 각 집중국의 수신 가능 영역의 거리 합이 최소가 되려면, 각 집중국 센서 수신 가능 영역의 시작점과 끝점은 센서 있는 곳인 게 좋겠다.
- 각 집중국 센서 수신 가능 영역이 조그마한 게 좋다 -> 센서 사이 간격이 큰 순서대로 K-1개 없애자!!
- 그리고 나머지 간격들을 더하면 정답이다.
사실 전에 비슷한 문제를 푼 적이 있어서 4번 생각을 한 이후로는 쉽게 풀었던 것 같다.
그래도 여기까지 생각한 게 뿌듯하다..ㅎㅎ
코드
import sys
input = sys.stdin.readline
N = int(input())
K = int(input())
sensors = list(map(int, input().split()))
sensors = list(set(sensors)) # 중복 제거
sensors.sort() # 정렬
# 각 수의 간격 구하기 -> 큰 순서대로 없애기 -> 나머지의 합
distances = []
for i in range(len(sensors)-1):
distances.append(sensors[i+1]-sensors[i])
distances.sort(reverse=True)
print(sum(distances[K-1:]))
728x90
'즐거운 PS 👩💻🥰' 카테고리의 다른 글
[백준-파이썬] 4948: 베르트랑 공준 (0) | 2022.04.01 |
---|---|
[백준-파이썬] 11653: 소인수분해 (0) | 2022.04.01 |
[백준-파이썬] 1025: 제곱수 찾기 (0) | 2022.03.23 |
[백준-파이썬] 17829: 222-풀링 (0) | 2022.03.21 |
[백준-파이썬] 4779: 칸토어 집합 (2) | 2022.03.21 |