관찰이 필요한 문제 생각하는 방향에 따라서 어렵게 풀 수도 있고, 쉽게 풀 수도 있다.
지문 분석
수신 가능 영역의 길이를 최소화하기 위해선, 센서 간의 거리가 큰 곳부터 집중국을 설치해야 한다.
예제 2를 기준으로 센서들의 위치를 나열하면 3 6 7 8 10 12 14 15 18 20 이 되는데
정답이 되도록 집중국을 설치하면, 집중국의 포함 범위는 다음과 같다.
3 / 6 7 8 / 10 12 / 14 15 / 18 20
이제 각 집중국을 /로 나눈 영역 내 최대 1개의 아무 센서에 설치하면 된다.
예를 들자면, 6 7 8 위치에 있는 센서들 기준으로, 집중국은 6에 설치하나 7에 설치하나 해당 영역에서의 수신 가능 영역 길이는 항상 2이다.
또한, 빗금 친 곳 기준 간격을 재보면 3, 2, 2, 3로 각 센서들 간의 거리 중 가장 먼 곳 상위 4개이다.
따라서, 센서들의 간격 기준 상위 K - 1개를 제외한 값들의 합이 최적의 범위가 되는 것이다.
문제에서 알려준 범위에서 K < N 이란 말이 없다.
따라서, K >= N라면, 모든 센서에 하나의 집중국을 설치할 수 있으니 0을 출력한다.
더보기
def main():
N = int(input())
K = int(input())
censors = list(map(int, input().split()))
censors.sort()
distances = []
for i in range(N - 1):
distances.append(censors[i + 1] - censors[i])
distances.sort()
for i in range(K - 1):
if not distances:
break
distances.pop()
print(sum(distances))
if __name__ == "__main__":
main()
'알고리즘 > 백준' 카테고리의 다른 글
백준[10835] 카드게임 (Python3) (0) | 2022.11.05 |
---|---|
백준[8980] 택배 (Python3) (0) | 2022.11.05 |
백준[16906] 욱제어 (Python3) (0) | 2022.11.05 |
백준[19942] 다이어트 (Python3) (0) | 2022.11.05 |
백준 [15971] 두 로봇 (Python3) (0) | 2022.11.05 |