2212. 센서

멍진이·2021년 6월 16일
0

백준 문제풀기

목록 보기
17/36

문제 링크

2212. 센서

문제 코드

sensor  = int(input())
center = int(input())

center_list = list(map(int,input().split()))

if center >= sensor:
    print(0)
else:
    center_set = set(center_list)
    center_list = list(center_set)

    center_list.sort()
    diff = []
    diff_total = 0
    for i in range(len(center_list)-1):
        diff.append(center_list[i+1] - center_list[i])
        diff_total += center_list[i+1] - center_list[i]

    diff.sort(reverse=True)

    for i in range(center-1):
        diff_total -=diff[i]

    print(diff_total)

문제 풀이

  • 처음에는 정수마다 sensor까지의 값의 합을 구하려고 했다.
  • 같은 방향일 경우 더 큰 길이가 작은 길이를 무시하는것을 확인했다.
  • 두번째에는 max와 min을 구해서 중간 값으로 자르려고했다.
  • 예제는 맞지만
    9
    3
    1 2 4 5 6 7 8 9 10
    해당 예제에서 틀림을 확인했다.
  • 세번째에는 각각의 노드마다 difference 값을 구하고, center의 개수 -1 만큼 difference가 큰것부터 빼주면 된다는 것을 알게 되었다.
  • 중요한 사실 list -> set -> list를 하면 자동 sorting 이 되는 줄 알았는데 아니더라. 반드시 sorting 필요
  • center가 sensor보다 많을 수도 있으므로 해당 경우는 0을 출력하도록 설정
profile
개발하는 멍멍이

0개의 댓글