문제 링크
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을 출력하도록 설정