[백준] #2212 Python

Jiyoon·2021년 10월 4일
0

Algorithm

목록 보기
17/24

백준 2212번 파이썬
https://www.acmicpc.net/problem/2212

아이디어

센서 사이의 거리를 구하고 (집중국의 개수 - 1)개 만큼 내림차순 순으로 빼준 후 나머지 거리들을 더해주면 된다.

원래는 거리의 차 중, 서로 붙어 있는 값은 빼면 안되는 줄 알았다. 붙어있는 거리를 모두 빼버리면 거리 사이에 있는 센서를 포함 못 시키는 줄 알았다. 자만심에 눈이 멀어 문제 자체를 의심했었다,,,

알아보니 집중국이 커버칠 수 있는 거리가 0인 조건을 빼먹은 것이다. 뺄 수 있는 거리의 개수는 (집중국-1)개라 붙어있는 거리를 제외시켜도 중간에 낀 센서를 집중국이 포함시킬 수 있기 때문에 가장 큰 거리를 제외시켜주면 된다.

전체코드

import sys
input = sys.stdin.readline

N = int(input())
K = int(input())
sensor = sorted(list(map(int, input().split())))



sensor_diff = []
for i in range(len(sensor)-1):
    diff = sensor[i+1] - sensor[i]
    if diff != 0:
        sensor_diff.append(diff)
    else:
        pass


if len(sensor_diff) == 0 and K >= N:
    print(0) 
else:
    if K == 1:
        print(sum(sensor_diff))
    else:
        sensor_diff.sort()
        for _ in range(K-1):
            sensor_diff.pop()
        
        print(sum(sensor_diff))

느낀점

조건 확인 잘하고 절대 문제가 오류날 일 없다는 점 명심하자,,, 틀리면 내가 문제인 것이다,,, 오류가 있었으면 일찌감치 고수님들이 건의해서 고쳤을 것이다,,,

0개의 댓글