백준 문제 링크
포인트 카드
- Ai가 N보다 크거나 같아야 경품을 얻을 수 있다.
- 당첨 도장이 N보다 작은 경우 N-Ai를 계산하여 temp에 넣어준다
- 당첨 도장이 N보다 큰 경우 M-1(얻고자 하는 경품 수)에서 1을 빼준다.
- temp를 오름차순 정렬하면, 당첨까지 필요한 도장의 수가 작은 개수의 값부터 나오게 되는데, 필요한 경품 수만큼 for 반복문으로 temp의 값을 더해준다. 예를 들어 필요한 경품 수 = 2개, temp = [2,5,6,7]이면 2+5를 더한 값이 경품을 얻기 위해 필요한 비용의 최솟값인 것이다.
N,M = map(int, input().split(" "))
card = []
cnt = M-1
temp = []
cost = 0
for _ in range(M):
card.append(list(map(int ,input().split(" "))))
for i in range(len(card)):
if card[i][0] < N:
temp.append(N-card[i][0])
else:
cnt -= 1
temp.sort()
if cnt > 0:
for i in range(cnt):
cost += temp[i]
print(cost)